Generated by Cython 0.24

Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.

Raw output: libEVOLVE.c

+0001: # cython: boundscheck=False, nonecheck=False, wraparound=False, cdivision=True
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0002: from __future__ import division
 0003: 
+0004: import math
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_math, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_math, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0005: import os
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0006: import random
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_random, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_random, __pyx_t_1) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0007: import sys
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0008: import time
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0009: 
+0010: import cv2
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_cv2, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cv2, __pyx_t_1) < 0) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0011: 
+0012: import libCOLOR as COLOR
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_libCOLOR, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COLOR, __pyx_t_1) < 0) __PYX_ERR(0, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0013: import libCONVERT as conv
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_libCONVERT, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_conv, __pyx_t_1) < 0) __PYX_ERR(0, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0014: import libMETROPOLIS as met
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_libMETROPOLIS, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_met, __pyx_t_1) < 0) __PYX_ERR(0, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0015: import libMORPH as morph
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_libMORPH, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_morph, __pyx_t_1) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0016: import numpy as np
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0017: 
 0018: 
 0019: from libc.math cimport ceil
 0020: 
 0021: 
 0022: cimport numpy as np
 0023: cimport cython
 0024: # from cython.parallel import prange
 0025: 
 0026: 
+0027: cdef float pi = np.pi
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_pi); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_9libEVOLVE_pi = __pyx_t_3;
 0028: 
+0029: def plantseed(int myseed):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_1plantseed(PyObject *__pyx_self, PyObject *__pyx_arg_myseed); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_1plantseed = {"plantseed", (PyCFunction)__pyx_pw_9libEVOLVE_1plantseed, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_1plantseed(PyObject *__pyx_self, PyObject *__pyx_arg_myseed) {
  int __pyx_v_myseed;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("plantseed (wrapper)", 0);
  assert(__pyx_arg_myseed); {
    __pyx_v_myseed = __Pyx_PyInt_As_int(__pyx_arg_myseed); if (unlikely((__pyx_v_myseed == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 29, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("libEVOLVE.plantseed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9libEVOLVE_plantseed(__pyx_self, ((int)__pyx_v_myseed));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_plantseed(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_myseed) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("plantseed", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("libEVOLVE.plantseed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_s_myseed, __pyx_n_s_myseed); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__11);
  __Pyx_GIVEREF(__pyx_tuple__11);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_1plantseed, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_plantseed, __pyx_t_2) < 0) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_plantseed, 29, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 29, __pyx_L1_error)
+0030:     if myseed > 0:
  __pyx_t_1 = ((__pyx_v_myseed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
+0031:         np.random.seed(myseed)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_random); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_seed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_myseed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 31, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0032:         random.seed(myseed)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_random); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_seed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_myseed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0033: 
+0034: cdef bresint(np.ndarray[np.int_t, ndim=2] I, int xo, int yo, int r):
static PyObject *__pyx_f_9libEVOLVE_bresint(PyArrayObject *__pyx_v_I, int __pyx_v_xo, int __pyx_v_yo, int __pyx_v_r) {
  PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_x;
  PY_LONG_LONG __pyx_v_y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bresint", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 34, __pyx_L1_error)
  }
  __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
/* … */
  /* function exit code */
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.bresint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0035:     cdef long long dum, x, y
+0036:     x = r
  __pyx_v_x = __pyx_v_r;
+0037:     y = 0
  __pyx_v_y = 0;
+0038:     dum = 1 - x
  __pyx_v_dum = (1 - __pyx_v_x);
+0039:     while x >= y:
  while (1) {
    __pyx_t_1 = ((__pyx_v_x >= __pyx_v_y) != 0);
    if (!__pyx_t_1) break;
+0040:         I[x + xo, y + yo] = 1
    __pyx_t_2 = (__pyx_v_x + __pyx_v_xo);
    __pyx_t_3 = (__pyx_v_y + __pyx_v_yo);
    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_3, __pyx_pybuffernd_I.diminfo[1].strides) = 1;
+0041:         I[y + xo, x + yo] = 1
    __pyx_t_4 = (__pyx_v_y + __pyx_v_xo);
    __pyx_t_5 = (__pyx_v_x + __pyx_v_yo);
    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_5, __pyx_pybuffernd_I.diminfo[1].strides) = 1;
+0042:         I[-x + xo, y + yo] = 1
    __pyx_t_6 = ((-__pyx_v_x) + __pyx_v_xo);
    __pyx_t_7 = (__pyx_v_y + __pyx_v_yo);
    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_7, __pyx_pybuffernd_I.diminfo[1].strides) = 1;
+0043:         I[-y + xo, x + yo] = 1
    __pyx_t_8 = ((-__pyx_v_y) + __pyx_v_xo);
    __pyx_t_9 = (__pyx_v_x + __pyx_v_yo);
    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_9, __pyx_pybuffernd_I.diminfo[1].strides) = 1;
+0044:         I[-x + xo, -y + yo] = 1
    __pyx_t_10 = ((-__pyx_v_x) + __pyx_v_xo);
    __pyx_t_11 = ((-__pyx_v_y) + __pyx_v_yo);
    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_10, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_11, __pyx_pybuffernd_I.diminfo[1].strides) = 1;
+0045:         I[-y + xo, -x + yo] = 1
    __pyx_t_12 = ((-__pyx_v_y) + __pyx_v_xo);
    __pyx_t_13 = ((-__pyx_v_x) + __pyx_v_yo);
    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_13, __pyx_pybuffernd_I.diminfo[1].strides) = 1;
+0046:         I[x + xo, -y + yo] = 1
    __pyx_t_14 = (__pyx_v_x + __pyx_v_xo);
    __pyx_t_15 = ((-__pyx_v_y) + __pyx_v_yo);
    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_15, __pyx_pybuffernd_I.diminfo[1].strides) = 1;
+0047:         I[y + xo, -x + yo] = 1
    __pyx_t_16 = (__pyx_v_y + __pyx_v_xo);
    __pyx_t_17 = ((-__pyx_v_x) + __pyx_v_yo);
    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_17, __pyx_pybuffernd_I.diminfo[1].strides) = 1;
+0048:         y = y + 1
    __pyx_v_y = (__pyx_v_y + 1);
+0049:         if dum <= 0:
    __pyx_t_1 = ((__pyx_v_dum <= 0) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
+0050:             dum = dum + 2 * y + 1
      __pyx_v_dum = ((__pyx_v_dum + (2 * __pyx_v_y)) + 1);
 0051:         else:
+0052:             x = x - 1
    /*else*/ {
      __pyx_v_x = (__pyx_v_x - 1);
+0053:             dum = dum + 2 * (y - x) + 1
      __pyx_v_dum = ((__pyx_v_dum + (2 * (__pyx_v_y - __pyx_v_x))) + 1);
    }
    __pyx_L5:;
  }
+0054:     return I
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_I));
  __pyx_r = ((PyObject *)__pyx_v_I);
  goto __pyx_L0;
 0055: 
+0056: cdef void setwindows(int sa):
static void __pyx_f_9libEVOLVE_setwindows(int __pyx_v_sa) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setwindows", 0);
/* … */
  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("libEVOLVE.setwindows", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}
+0057:     if sa == 0:
  switch (__pyx_v_sa) {
    case 0:
/* … */
    break;
+0058:         cv2.namedWindow("Microstructure Evolution Grey Scale", cv2.WINDOW_NORMAL)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_namedWindow); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_WINDOW_NORMAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0059:         cv2.destroyWindow("Microstructure Evolution Grey Scale")
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_destroyWindow); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Microstructure_Evolution_Grey_Sc); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple_);
  __Pyx_GIVEREF(__pyx_tuple_);
+0060:     elif sa == 1:
    case 1:
/* … */
    break;
+0061:         cv2.namedWindow("Microstructure Evolution Grey Scale", cv2.WINDOW_NORMAL)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_namedWindow); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_WINDOW_NORMAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0062:         cv2.namedWindow("Microstructure Evolution Random Color", cv2.WINDOW_NORMAL)
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_namedWindow); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_WINDOW_NORMAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Random);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Random);
    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_kp_s_Microstructure_Evolution_Random);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0063:         cv2.destroyWindow("Microstructure Evolution Random Color")
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_destroyWindow); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_Microstructure_Evolution_Random); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__2);
  __Pyx_GIVEREF(__pyx_tuple__2);
+0064:     elif sa == 2:
    case 2:
/* … */
    break;
+0065:         cv2.namedWindow("Microstructure Evolution Grey Scale", cv2.WINDOW_NORMAL)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_namedWindow); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_WINDOW_NORMAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0066:         cv2.namedWindow("Microstructure Evolution Random Color", cv2.WINDOW_NORMAL)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_namedWindow); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_WINDOW_NORMAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Random);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Random);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_kp_s_Microstructure_Evolution_Random);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0067:         cv2.destroyWindow("Microstructure Evolution Grey Scale")
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_destroyWindow); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_Microstructure_Evolution_Grey_Sc); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__3);
  __Pyx_GIVEREF(__pyx_tuple__3);
+0068:     elif sa == 3:
    case 3:
/* … */
    break;
    default: break;
  }
+0069:         cv2.namedWindow("Microstructure Evolution Grey Scale", cv2.WINDOW_NORMAL)
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_namedWindow); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_WINDOW_NORMAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0070:         cv2.namedWindow("Microstructure Evolution Random Color", cv2.WINDOW_NORMAL)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_namedWindow); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_WINDOW_NORMAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Random);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Random);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_kp_s_Microstructure_Evolution_Random);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0071: 
+0072: cdef void showriteframe(bint sa, bint sf, fd, int r, np.ndarray[np.int64_t, ndim=2] I, np.ndarray[np.double_t, ndim=3] Col , int p, int Iter, int framepause):
static void __pyx_f_9libEVOLVE_showriteframe(int __pyx_v_sa, int __pyx_v_sf, PyObject *__pyx_v_fd, int __pyx_v_r, PyArrayObject *__pyx_v_I, PyArrayObject *__pyx_v_Col, int __pyx_v_p, int __pyx_v_Iter, int __pyx_v_framepause) {
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("showriteframe", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 72, __pyx_L1_error)
  }
  __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_v_Col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_double_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) __PYX_ERR(0, 72, __pyx_L1_error)
  }
  __pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
/* … */
  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_WriteUnraisable("libEVOLVE.showriteframe", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_RefNannyFinishContext();
}
 0073: 
+0074:     if sa == 2:
  switch (__pyx_v_sa) {
    case 2:
/* … */
    break;
+0075:         cv2.imshow("Microstructure Evolution Random Color", Col)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_imshow); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_4 = 1;
      }
    }
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Random);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Random);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_kp_s_Microstructure_Evolution_Random);
    __Pyx_INCREF(((PyObject *)__pyx_v_Col));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Col));
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_Col));
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0076:         cv2.waitKey(framepause)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_waitKey); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_framepause); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_2) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 76, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0077:     elif sa == 0:
    case 0:
    break;
 0078:         pass
+0079:     elif sa == 1:
    case 1:
/* … */
    break;
+0080:         cv2.imshow("Microstructure Evolution Grey Scale", I / p)
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_imshow); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyNumber_Divide(((PyObject *)__pyx_v_I), __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_4 = 1;
      }
    }
    __pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0081:         cv2.waitKey(framepause)
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_waitKey); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_framepause); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 81, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0082:     elif sa == 3:
    case 3:
/* … */
    break;
    default: break;
  }
+0083:         cv2.imshow("Microstructure Evolution Grey Scale", I / p)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_imshow); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyNumber_Divide(((PyObject *)__pyx_v_I), __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_4 = 1;
      }
    }
    __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_kp_s_Microstructure_Evolution_Grey_Sc);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0084:         cv2.imshow("Microstructure Evolution Random Color", Col)
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_imshow); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_4 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Microstructure_Evolution_Random);
    __Pyx_GIVEREF(__pyx_kp_s_Microstructure_Evolution_Random);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_kp_s_Microstructure_Evolution_Random);
    __Pyx_INCREF(((PyObject *)__pyx_v_Col));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Col));
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, ((PyObject *)__pyx_v_Col));
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0085:         cv2.waitKey(framepause)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_waitKey); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_framepause); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 85, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0086: 
+0087:     if sf is True:
  __pyx_t_7 = ((__pyx_v_sf == 1) != 0);
  if (__pyx_t_7) {
/* … */
  }
+0088:         if sa == 0 or sa == 2 :
    switch (__pyx_v_sa) {
      case 0:
      case 2:
/* … */
      break;
+0089:             cv2.imwrite(str(fd + "/" + str(Iter) + 'Color_' + '{0:06d}'.format(r) + '.png'), Col * 255)
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_imwrite); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Add(__pyx_v_fd, __pyx_kp_s__4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_Iter); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_n_s_Color); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_0_06d, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_r); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (!__pyx_t_9) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_5);
      } else {
        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 89, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_s_png); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Multiply(((PyObject *)__pyx_v_Col), __pyx_int_255); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = NULL;
      __pyx_t_4 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_4 = 1;
        }
      }
      __pyx_t_10 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (__pyx_t_3) {
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_4, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_4, __pyx_t_6);
      __pyx_t_5 = 0;
      __pyx_t_6 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0090:         elif sa == 1:
      case 1:
/* … */
      break;
+0091:             cv2.imwrite(str(fd + "/" + str(Iter) + 'Grey_' + '{0:06d}'.format(r) + +'.png'), I * 255 / p)
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_imwrite); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyNumber_Add(__pyx_v_fd, __pyx_kp_s__4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_Iter); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_n_s_Grey); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_0_06d, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_r); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_8) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_5);
      } else {
        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 91, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyNumber_Add(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_Positive(__pyx_kp_s_png); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyNumber_Add(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_Multiply(((PyObject *)__pyx_v_I), __pyx_int_255); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_9 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      __pyx_t_4 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_4 = 1;
        }
      }
      __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__pyx_t_2) {
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_t_9);
      __pyx_t_6 = 0;
      __pyx_t_9 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0092:         elif sa == 3:
      case 3:
/* … */
      break;
      default: break;
    }
+0093:             cv2.imwrite(str(fd + "/" + str(Iter) + 'Grey_' + '{0:06d}'.format(r) + '.png'), I * 255 / p)
      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_imwrite); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = PyNumber_Add(__pyx_v_fd, __pyx_kp_s__4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_Iter); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9);
      __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Add(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyNumber_Add(__pyx_t_6, __pyx_n_s_Grey); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_0_06d, __pyx_n_s_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_r); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_6);
      } else {
        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 93, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2);
        __pyx_t_2 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = PyNumber_Add(__pyx_t_9, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Add(__pyx_t_10, __pyx_kp_s_png); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = PyNumber_Multiply(((PyObject *)__pyx_v_I), __pyx_int_255); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = NULL;
      __pyx_t_4 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_4 = 1;
        }
      }
      __pyx_t_10 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (__pyx_t_9) {
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_4, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_4, __pyx_t_8);
      __pyx_t_6 = 0;
      __pyx_t_8 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0094:             cv2.imwrite(str(fd + "/" + str(Iter) + 'Color_' + '{0:06d}'.format(r) + '.png'), Col * 255)
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_imwrite); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_Add(__pyx_v_fd, __pyx_kp_s__4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_Iter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = PyNumber_Add(__pyx_t_6, __pyx_n_s_Color); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_0_06d, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_r); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_2 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (!__pyx_t_2) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_6);
      } else {
        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_9);
        __pyx_t_9 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_Add(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_kp_s_png); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_Multiply(((PyObject *)__pyx_v_Col), __pyx_int_255); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = NULL;
      __pyx_t_4 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_4 = 1;
        }
      }
      __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_t_5);
      __pyx_t_6 = 0;
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0095: 
+0096: cdef long long checkalive(np.ndarray[np.int64_t, ndim=2] I, int m, int n, int Io, int xmin, int xmax, int ymin, int ymax):
static PY_LONG_LONG __pyx_f_9libEVOLVE_checkalive(PyArrayObject *__pyx_v_I, int __pyx_v_m, int __pyx_v_n, int __pyx_v_Io, int __pyx_v_xmin, int __pyx_v_xmax, int __pyx_v_ymin, int __pyx_v_ymax) {
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_io;
  PY_LONG_LONG __pyx_v_jo;
  PY_LONG_LONG __pyx_v_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  PY_LONG_LONG __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("checkalive", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 96, __pyx_L1_error)
  }
  __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
/* … */
  /* function exit code */
  __pyx_L1_error:;
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_WriteUnraisable("libEVOLVE.checkalive", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
  __pyx_r = 0;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0097: 
 0098:     cdef long long i , j, io, jo, a
+0099:     a = 1
  __pyx_v_a = 1;
+0100:     for i in range(xmin, xmax + 1):
  __pyx_t_1 = (__pyx_v_xmax + 1);
  for (__pyx_t_2 = __pyx_v_xmin; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
    __pyx_v_i = __pyx_t_2;
+0101:         for j in range(ymin, ymax + 1):
    __pyx_t_3 = (__pyx_v_ymax + 1);
    for (__pyx_t_4 = __pyx_v_ymin; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_v_j = __pyx_t_4;
+0102:             if I[i, j] == Io:
      __pyx_t_5 = __pyx_v_i;
      __pyx_t_6 = __pyx_v_j;
      __pyx_t_7 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_6, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
      if (__pyx_t_7) {
/* … */
      }
    }
  }
+0103:                 io, jo = i + 1, j
        __pyx_t_8 = (__pyx_v_i + 1);
        __pyx_t_9 = __pyx_v_j;
        __pyx_v_io = __pyx_t_8;
        __pyx_v_jo = __pyx_t_9;
+0104:                 if 0 <= io <= m - 1 and 0 <= jo <= n - 1:
        __pyx_t_10 = (0 <= __pyx_v_io);
        if (__pyx_t_10) {
          __pyx_t_10 = (__pyx_v_io <= (__pyx_v_m - 1));
        }
        __pyx_t_11 = (__pyx_t_10 != 0);
        if (__pyx_t_11) {
        } else {
          __pyx_t_7 = __pyx_t_11;
          goto __pyx_L9_bool_binop_done;
        }
        __pyx_t_11 = (0 <= __pyx_v_jo);
        if (__pyx_t_11) {
          __pyx_t_11 = (__pyx_v_jo <= (__pyx_v_n - 1));
        }
        __pyx_t_10 = (__pyx_t_11 != 0);
        __pyx_t_7 = __pyx_t_10;
        __pyx_L9_bool_binop_done:;
        if (__pyx_t_7) {
/* … */
        }
+0105:                     if I[io, jo] == 0:
          __pyx_t_9 = __pyx_v_io;
          __pyx_t_8 = __pyx_v_jo;
          __pyx_t_7 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_8, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_7) {
/* … */
          }
+0106:                         return a
            __pyx_r = __pyx_v_a;
            goto __pyx_L0;
+0107:                 io, jo = i - 1, j
        __pyx_t_12 = (__pyx_v_i - 1);
        __pyx_t_13 = __pyx_v_j;
        __pyx_v_io = __pyx_t_12;
        __pyx_v_jo = __pyx_t_13;
+0108:                 if 0 <= io <= m - 1 and 0 <= jo <= n - 1:
        __pyx_t_10 = (0 <= __pyx_v_io);
        if (__pyx_t_10) {
          __pyx_t_10 = (__pyx_v_io <= (__pyx_v_m - 1));
        }
        __pyx_t_11 = (__pyx_t_10 != 0);
        if (__pyx_t_11) {
        } else {
          __pyx_t_7 = __pyx_t_11;
          goto __pyx_L13_bool_binop_done;
        }
        __pyx_t_11 = (0 <= __pyx_v_jo);
        if (__pyx_t_11) {
          __pyx_t_11 = (__pyx_v_jo <= (__pyx_v_n - 1));
        }
        __pyx_t_10 = (__pyx_t_11 != 0);
        __pyx_t_7 = __pyx_t_10;
        __pyx_L13_bool_binop_done:;
        if (__pyx_t_7) {
/* … */
        }
+0109:                     if I[io, jo] == 0:
          __pyx_t_13 = __pyx_v_io;
          __pyx_t_12 = __pyx_v_jo;
          __pyx_t_7 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_12, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_7) {
/* … */
          }
+0110:                         return a
            __pyx_r = __pyx_v_a;
            goto __pyx_L0;
+0111:                 io, jo = i, j + 1
        __pyx_t_14 = __pyx_v_i;
        __pyx_t_15 = (__pyx_v_j + 1);
        __pyx_v_io = __pyx_t_14;
        __pyx_v_jo = __pyx_t_15;
+0112:                 if 0 <= io <= m - 1 and 0 <= jo <= n - 1:
        __pyx_t_10 = (0 <= __pyx_v_io);
        if (__pyx_t_10) {
          __pyx_t_10 = (__pyx_v_io <= (__pyx_v_m - 1));
        }
        __pyx_t_11 = (__pyx_t_10 != 0);
        if (__pyx_t_11) {
        } else {
          __pyx_t_7 = __pyx_t_11;
          goto __pyx_L17_bool_binop_done;
        }
        __pyx_t_11 = (0 <= __pyx_v_jo);
        if (__pyx_t_11) {
          __pyx_t_11 = (__pyx_v_jo <= (__pyx_v_n - 1));
        }
        __pyx_t_10 = (__pyx_t_11 != 0);
        __pyx_t_7 = __pyx_t_10;
        __pyx_L17_bool_binop_done:;
        if (__pyx_t_7) {
/* … */
        }
+0113:                     if I[io, jo] == 0:
          __pyx_t_15 = __pyx_v_io;
          __pyx_t_14 = __pyx_v_jo;
          __pyx_t_7 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_14, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_7) {
/* … */
          }
+0114:                         return a
            __pyx_r = __pyx_v_a;
            goto __pyx_L0;
+0115:                 io, jo = i, j - 1
        __pyx_t_16 = __pyx_v_i;
        __pyx_t_17 = (__pyx_v_j - 1);
        __pyx_v_io = __pyx_t_16;
        __pyx_v_jo = __pyx_t_17;
+0116:                 if 0 <= io <= m - 1 and 0 <= jo <= n - 1:
        __pyx_t_10 = (0 <= __pyx_v_io);
        if (__pyx_t_10) {
          __pyx_t_10 = (__pyx_v_io <= (__pyx_v_m - 1));
        }
        __pyx_t_11 = (__pyx_t_10 != 0);
        if (__pyx_t_11) {
        } else {
          __pyx_t_7 = __pyx_t_11;
          goto __pyx_L21_bool_binop_done;
        }
        __pyx_t_11 = (0 <= __pyx_v_jo);
        if (__pyx_t_11) {
          __pyx_t_11 = (__pyx_v_jo <= (__pyx_v_n - 1));
        }
        __pyx_t_10 = (__pyx_t_11 != 0);
        __pyx_t_7 = __pyx_t_10;
        __pyx_L21_bool_binop_done:;
        if (__pyx_t_7) {
/* … */
        }
+0117:                     if I[io, jo] == 0:
          __pyx_t_17 = __pyx_v_io;
          __pyx_t_16 = __pyx_v_jo;
          __pyx_t_7 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_16, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_7) {
/* … */
          }
+0118:                         return a
            __pyx_r = __pyx_v_a;
            goto __pyx_L0;
+0119:     a = 0
  __pyx_v_a = 0;
+0120:     return a
  __pyx_r = __pyx_v_a;
  goto __pyx_L0;
 0121: 
+0122: cdef randindex2D(int m, int n, int p):
static PyObject *__pyx_f_9libEVOLVE_randindex2D(int __pyx_v_m, int __pyx_v_n, int __pyx_v_p) {
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_v_X = NULL;
  PyObject *__pyx_v_Y = NULL;
  PY_LONG_LONG __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("randindex2D", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("libEVOLVE.randindex2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XDECREF(__pyx_v_X);
  __Pyx_XDECREF(__pyx_v_Y);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0123: 
+0124:     a = random.sample(xrange(m * n), p)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_random); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sample); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_v_m * __pyx_v_n)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_xrange, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_a = __pyx_t_1;
  __pyx_t_1 = 0;
+0125:     X = [0] * p
  __pyx_t_1 = PyList_New(1 * ((__pyx_v_p<0) ? 0:__pyx_v_p)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < __pyx_v_p; __pyx_temp++) {
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_int_0);
    }
  }
  __pyx_v_X = __pyx_t_1;
  __pyx_t_1 = 0;
+0126:     Y = [0] * p
  __pyx_t_1 = PyList_New(1 * ((__pyx_v_p<0) ? 0:__pyx_v_p)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < __pyx_v_p; __pyx_temp++) {
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_int_0);
    }
  }
  __pyx_v_Y = __pyx_t_1;
  __pyx_t_1 = 0;
 0127:     cdef long long i
+0128:     for i in range(0, p):
  __pyx_t_8 = __pyx_v_p;
  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
    __pyx_v_i = __pyx_t_9;
+0129:         X[i] = (a[i]) / (n)
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_a, __pyx_v_i, PY_LONG_LONG, 1, __Pyx_PyInt_From_PY_LONG_LONG, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_n); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(__Pyx_SetItemInt(__pyx_v_X, __pyx_v_i, __pyx_t_7, PY_LONG_LONG, 1, __Pyx_PyInt_From_PY_LONG_LONG, 0, 0, 0) < 0)) __PYX_ERR(0, 129, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0130:         Y[i] = (a[i]) % (n)
    __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_a, __pyx_v_i, PY_LONG_LONG, 1, __Pyx_PyInt_From_PY_LONG_LONG, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_n); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyNumber_Remainder(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(__Pyx_SetItemInt(__pyx_v_Y, __pyx_v_i, __pyx_t_1, PY_LONG_LONG, 1, __Pyx_PyInt_From_PY_LONG_LONG, 0, 0, 0) < 0)) __PYX_ERR(0, 130, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
+0131:     X = np.array(X, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_X);
  __Pyx_GIVEREF(__pyx_v_X);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_X);
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF_SET(__pyx_v_X, __pyx_t_2);
  __pyx_t_2 = 0;
+0132:     Y = np.array(Y, dtype=np.int64)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_Y);
  __Pyx_GIVEREF(__pyx_v_Y);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_Y);
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_Y, __pyx_t_4);
  __pyx_t_4 = 0;
 0133: 
+0134:     return X, Y
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_X);
  __Pyx_GIVEREF(__pyx_v_X);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_X);
  __Pyx_INCREF(__pyx_v_Y);
  __Pyx_GIVEREF(__pyx_v_Y);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_Y);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;
 0135: 
 0136: 
 0137: 
 0138: 
+0139: def labelsort(long long n, np.ndarray[np.int64_t, ndim=1] X, np.ndarray[np.int64_t, ndim=1] Y):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_3labelsort(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_3labelsort = {"labelsort", (PyCFunction)__pyx_pw_9libEVOLVE_3labelsort, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9libEVOLVE_3labelsort(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PY_LONG_LONG __pyx_v_n;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("labelsort (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_X,&__pyx_n_s_Y,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_X)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("labelsort", 1, 3, 3, 1); __PYX_ERR(0, 139, __pyx_L3_error)
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Y)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("labelsort", 1, 3, 3, 2); __PYX_ERR(0, 139, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "labelsort") < 0)) __PYX_ERR(0, 139, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_n = __Pyx_PyInt_As_PY_LONG_LONG(values[0]); if (unlikely((__pyx_v_n == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 139, __pyx_L3_error)
    __pyx_v_X = ((PyArrayObject *)values[1]);
    __pyx_v_Y = ((PyArrayObject *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("labelsort", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 139, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("libEVOLVE.labelsort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_X), __pyx_ptype_5numpy_ndarray, 1, "X", 0))) __PYX_ERR(0, 139, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_Y), __pyx_ptype_5numpy_ndarray, 1, "Y", 0))) __PYX_ERR(0, 139, __pyx_L1_error)
  __pyx_r = __pyx_pf_9libEVOLVE_2labelsort(__pyx_self, __pyx_v_n, __pyx_v_X, __pyx_v_Y);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_2labelsort(CYTHON_UNUSED PyObject *__pyx_self, PY_LONG_LONG __pyx_v_n, PyArrayObject *__pyx_v_X, PyArrayObject *__pyx_v_Y) {
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_p;
  PyArrayObject *__pyx_v_XX = 0;
  PyArrayObject *__pyx_v_YY = 0;
  PyArrayObject *__pyx_v_labelsorted = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_XX;
  __Pyx_Buffer __pyx_pybuffer_XX;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_YY;
  __Pyx_Buffer __pyx_pybuffer_YY;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_labelsorted;
  __Pyx_Buffer __pyx_pybuffer_labelsorted;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("labelsort", 0);
  __pyx_pybuffer_XX.pybuffer.buf = NULL;
  __pyx_pybuffer_XX.refcount = 0;
  __pyx_pybuffernd_XX.data = NULL;
  __pyx_pybuffernd_XX.rcbuffer = &__pyx_pybuffer_XX;
  __pyx_pybuffer_YY.pybuffer.buf = NULL;
  __pyx_pybuffer_YY.refcount = 0;
  __pyx_pybuffernd_YY.data = NULL;
  __pyx_pybuffernd_YY.rcbuffer = &__pyx_pybuffer_YY;
  __pyx_pybuffer_labelsorted.pybuffer.buf = NULL;
  __pyx_pybuffer_labelsorted.refcount = 0;
  __pyx_pybuffernd_labelsorted.data = NULL;
  __pyx_pybuffernd_labelsorted.rcbuffer = &__pyx_pybuffer_labelsorted;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 139, __pyx_L1_error)
  }
  __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 139, __pyx_L1_error)
  }
  __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_XX.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_YY.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labelsorted.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.labelsort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_XX.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_YY.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labelsorted.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_XX);
  __Pyx_XDECREF((PyObject *)__pyx_v_YY);
  __Pyx_XDECREF((PyObject *)__pyx_v_labelsorted);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__13 = PyTuple_Pack(8, __pyx_n_s_n, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_k, __pyx_n_s_p, __pyx_n_s_XX, __pyx_n_s_YY, __pyx_n_s_labelsorted); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_3labelsort, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_labelsort, __pyx_t_2) < 0) __PYX_ERR(0, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_labelsort, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 139, __pyx_L1_error)
 0140:     # NOTE THAT m is NOT REQUIRED
 0141:     cdef long long k
+0142:     cdef long long p = X.shape[0]
  __pyx_v_p = (__pyx_v_X->dimensions[0]);
+0143:     cdef np.ndarray[np.int64_t, ndim = 1] XX = np.zeros(p, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 143, __pyx_L1_error)
  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_XX.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_XX = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_XX.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 143, __pyx_L1_error)
    } else {__pyx_pybuffernd_XX.diminfo[0].strides = __pyx_pybuffernd_XX.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_XX.diminfo[0].shape = __pyx_pybuffernd_XX.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_6 = 0;
  __pyx_v_XX = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+0144:     cdef np.ndarray[np.int64_t, ndim = 1] YY = np.zeros(p, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 144, __pyx_L1_error)
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_YY.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_YY = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_YY.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 144, __pyx_L1_error)
    } else {__pyx_pybuffernd_YY.diminfo[0].strides = __pyx_pybuffernd_YY.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_YY.diminfo[0].shape = __pyx_pybuffernd_YY.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_7 = 0;
  __pyx_v_YY = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+0145:     cdef np.ndarray[np.int64_t, ndim = 1] labelsorted = np.zeros(p, dtype=np.int64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 145, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_2);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_labelsorted.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_labelsorted = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_labelsorted.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 145, __pyx_L1_error)
    } else {__pyx_pybuffernd_labelsorted.diminfo[0].strides = __pyx_pybuffernd_labelsorted.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_labelsorted.diminfo[0].shape = __pyx_pybuffernd_labelsorted.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_labelsorted = ((PyArrayObject *)__pyx_t_2);
  __pyx_t_2 = 0;
 0146: 
+0147:     labelsorted = np.sort(n * X + Y)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sort); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_Multiply(__pyx_t_4, ((PyObject *)__pyx_v_X)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_5, ((PyObject *)__pyx_v_Y)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 147, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 147, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_2);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_labelsorted.rcbuffer->pybuffer);
    __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_labelsorted.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_9 < 0)) {
      PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_labelsorted.rcbuffer->pybuffer, (PyObject*)__pyx_v_labelsorted, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
    }
    __pyx_pybuffernd_labelsorted.diminfo[0].strides = __pyx_pybuffernd_labelsorted.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_labelsorted.diminfo[0].shape = __pyx_pybuffernd_labelsorted.rcbuffer->pybuffer.shape[0];
    if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 147, __pyx_L1_error)
  }
  __pyx_t_8 = 0;
  __Pyx_DECREF_SET(__pyx_v_labelsorted, ((PyArrayObject *)__pyx_t_2));
  __pyx_t_2 = 0;
+0148:     for k in range(p):
  __pyx_t_13 = __pyx_v_p;
  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
    __pyx_v_k = __pyx_t_14;
+0149:         XX[k] = labelsorted[k] / n
    __pyx_t_15 = __pyx_v_k;
    __pyx_t_16 = __pyx_v_k;
    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_XX.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_XX.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_labelsorted.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_labelsorted.diminfo[0].strides)) / ((__pyx_t_5numpy_int64_t)__pyx_v_n));
+0150:         YY[k] = labelsorted[k] % n
    __pyx_t_17 = __pyx_v_k;
    __pyx_t_18 = __pyx_v_k;
    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_YY.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_YY.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_labelsorted.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_labelsorted.diminfo[0].strides)) % __pyx_v_n);
  }
+0151:     return XX, YY
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_v_XX));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_XX));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_XX));
  __Pyx_INCREF(((PyObject *)__pyx_v_YY));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_YY));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_YY));
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;
 0152: 
 0153: 
 0154: # cdef cutoff(np.ndarray[np.int64_t, ndim=1] X, np.ndarray[np.int64_t, ndim=1] Y, p):
 0155: #     
 0156: #     cdef np.ndarray[np.int64_t, ndim = 1] XX = np.zeros(p, dtype=np.int64)
 0157: #     cdef np.ndarray[np.int64_t, ndim = 1] YY = np.zeros(p, dtype=np.int64)
 0158: #     
 0159: #     if X.shape[0] == p:
 0160: #         return X, Y
 0161: #     else:
 0162: #         for i in range(p):
 0163: #             XX[i] = X[i]
 0164: #             YY[i] = Y[i]
 0165: #         return XX, YY
 0166: 
 0167: 
 0168: 
+0169: def Evolve_2D_Isotropic_SiteSaturated_without_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_5Evolve_2D_Isotropic_SiteSaturated_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_5Evolve_2D_Isotropic_SiteSaturated_without_gr2D = {"Evolve_2D_Isotropic_SiteSaturated_without_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_5Evolve_2D_Isotropic_SiteSaturated_without_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_5Evolve_2D_Isotropic_SiteSaturated_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Isotropic_SiteSaturated_without_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_4Evolve_2D_Isotropic_SiteSaturated_without_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_4Evolve_2D_Isotropic_SiteSaturated_without_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PY_LONG_LONG __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_r;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Isotropic_SiteSaturated_without_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_23);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Isotropic_SiteSaturated_without_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__15 = PyTuple_Pack(38, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_k, __pyx_n_s_r, __pyx_n_s_Io, __pyx_n_s_Iter, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__15);
  __Pyx_GIVEREF(__pyx_tuple__15);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_5Evolve_2D_Isotropic_SiteSaturated_without_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Isotropic_SiteSaturate, __pyx_t_2) < 0) __PYX_ERR(0, 169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 38, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Isotropic_SiteSaturate, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 169, __pyx_L1_error)
 0170:     # Grabbing data from the input object
+0171:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+0172:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+0173:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+0174:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+0175:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+0176:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+0177:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_3;
+0178:     cdef long long asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_2;
+0179:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_3;
+0180:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+0181:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
 0182: 
 0183:     # Declaring other variables
 0184:     cdef double tic, toc
 0185:     cdef long long i, j, deli, delj, xo, yo, PN, PE, PW, PS , k, r, Io, Iter
 0186:     cdef float red, green, blue
+0187:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 187, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 187, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+0188:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 188, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 188, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+0189:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 189, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 189, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+0190:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 190, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 190, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+0191:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 191, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 191, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+0192:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 192, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 192, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+0193:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 193, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 193, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+0194:     plantseed(myseed)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 194, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0195:     col = np.random.random((p, 3))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 195, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 195, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 195, __pyx_L1_error)
  }
  __pyx_t_14 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_4));
  __pyx_t_4 = 0;
+0196:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 196, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 196, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_tic = __pyx_t_18;
 0197: 
+0198:     if pdelNxy == []:
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_19) {
/* … */
    goto __pyx_L3;
  }
+0199:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_7 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 199, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 199, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 199, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_20 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_20(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_5 = __pyx_t_20(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_1), 2) < 0) __PYX_ERR(0, 199, __pyx_L1_error)
      __pyx_t_20 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_20 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 199, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 199, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 199, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 199, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 199, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 0200:     else:
+0201:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_21 = NULL;
    __pyx_t_22 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_21)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_21);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_22 = 1;
      }
    }
    __pyx_t_23 = PyTuple_New(7+__pyx_t_22); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    if (__pyx_t_21) {
      __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_21); __pyx_t_21 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_22, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_22, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_23, 2+__pyx_t_22, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_23, 3+__pyx_t_22, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_23, 4+__pyx_t_22, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_23, 5+__pyx_t_22, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_23, 6+__pyx_t_22, __pyx_int_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_23, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 201, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_23 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_23 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_23);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 201, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_23 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 201, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 201, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_20 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_20(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_23 = __pyx_t_20(__pyx_t_6); if (unlikely(!__pyx_t_23)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_23);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_6), 2) < 0) __PYX_ERR(0, 201, __pyx_L1_error)
      __pyx_t_20 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_20 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 201, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 201, __pyx_L1_error)
    if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 201, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 201, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_23);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 201, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_23));
    __pyx_t_23 = 0;
  }
  __pyx_L3:;
 0202: 
+0203:     if labelsorted == 1:
  __pyx_t_19 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_19) {
/* … */
  }
+0204:         X, Y = labelsort(n, X, Y)
    __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_22 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_23);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_23, function);
        __pyx_t_22 = 1;
      }
    }
    __pyx_t_1 = PyTuple_New(3+__pyx_t_22); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_22, __pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_22, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_22, ((PyObject *)__pyx_v_Y));
    __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 204, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_1);
      #else
      __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 204, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 204, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_20 = Py_TYPE(__pyx_t_4)->tp_iternext;
      index = 0; __pyx_t_23 = __pyx_t_20(__pyx_t_4); if (unlikely(!__pyx_t_23)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_23);
      index = 1; __pyx_t_1 = __pyx_t_20(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_4), 2) < 0) __PYX_ERR(0, 204, __pyx_L1_error)
      __pyx_t_20 = NULL;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_20 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 204, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 204, __pyx_L1_error)
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 204, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_23);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 204, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_23));
    __pyx_t_23 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 204, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;
+0205:     r = 0
  __pyx_v_r = 0;
+0206:     Iter = 1
  __pyx_v_Iter = 1;
+0207:     while True:
  while (1) {
+0208:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_2; __pyx_t_24+=1) {
      __pyx_v_k = __pyx_t_24;
+0209:             I[X[k], Y[k]] = k + 1
      __pyx_t_25 = __pyx_v_k;
      __pyx_t_26 = __pyx_v_k;
      __pyx_t_27 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_28 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+0210:             Col[X[k], Y[k], 2] = col[k, 0]
      __pyx_t_29 = __pyx_v_k;
      __pyx_t_30 = 0;
      __pyx_t_31 = __pyx_v_k;
      __pyx_t_32 = __pyx_v_k;
      __pyx_t_33 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_34 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_35 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_35, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_col.diminfo[1].strides));
+0211:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_36 = __pyx_v_k;
      __pyx_t_37 = 1;
      __pyx_t_38 = __pyx_v_k;
      __pyx_t_39 = __pyx_v_k;
      __pyx_t_40 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_41 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_42 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_37, __pyx_pybuffernd_col.diminfo[1].strides));
+0212:             Col[X[k], Y[k], 0] = col[k, 2]
      __pyx_t_43 = __pyx_v_k;
      __pyx_t_44 = 2;
      __pyx_t_45 = __pyx_v_k;
      __pyx_t_46 = __pyx_v_k;
      __pyx_t_47 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_48 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_49 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_col.diminfo[1].strides));
    }
 0213: 
+0214:         showriteframe(sa, sf, fd, r, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_r, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+0215:         r = 1
    __pyx_v_r = 1;
 0216: 
+0217:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 217, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_23);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_23, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      } else {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_23 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 217, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_23); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 217, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      if (!__pyx_t_19) break;
+0218:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_2; __pyx_t_24+=1) {
        __pyx_v_k = __pyx_t_24;
+0219:                 if a[k] == 1:
        __pyx_t_50 = __pyx_v_k;
        __pyx_t_19 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_19) {
/* … */
        }
      }
+0220:                     a[k] = 0
          __pyx_t_51 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+0221:                     xo = X[k]
          __pyx_t_52 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_X.diminfo[0].strides));
+0222:                     yo = Y[k]
          __pyx_t_53 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Y.diminfo[0].strides));
+0223:                     Io = I[xo, yo]
          __pyx_t_54 = __pyx_v_xo;
          __pyx_t_55 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_I.diminfo[1].strides));
+0224:                     red = col[k, 0]
          __pyx_t_56 = __pyx_v_k;
          __pyx_t_57 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_57, __pyx_pybuffernd_col.diminfo[1].strides));
+0225:                     green = col[k, 1]
          __pyx_t_58 = __pyx_v_k;
          __pyx_t_59 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_59, __pyx_pybuffernd_col.diminfo[1].strides));
+0226:                     blue = col[k, 2]
          __pyx_t_60 = __pyx_v_k;
          __pyx_t_61 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_61, __pyx_pybuffernd_col.diminfo[1].strides));
 0227: 
+0228:                     for deli in range(r + 1):
          __pyx_t_62 = (__pyx_v_r + 1);
          for (__pyx_t_63 = 0; __pyx_t_63 < __pyx_t_62; __pyx_t_63+=1) {
            __pyx_v_deli = __pyx_t_63;
+0229:                         for delj in range(r + 1):
            __pyx_t_64 = (__pyx_v_r + 1);
            for (__pyx_t_65 = 0; __pyx_t_65 < __pyx_t_64; __pyx_t_65+=1) {
              __pyx_v_delj = __pyx_t_65;
+0230:                             if deli * deli + delj * delj <= r * r:
              __pyx_t_19 = ((((__pyx_v_deli * __pyx_v_deli) + (__pyx_v_delj * __pyx_v_delj)) <= (__pyx_v_r * __pyx_v_r)) != 0);
              if (__pyx_t_19) {
/* … */
              }
            }
          }
+0231:                                 i, j = xo + deli, yo + delj
                __pyx_t_66 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_67 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_66;
                __pyx_v_j = __pyx_t_67;
+0232:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_68 = (0 <= __pyx_v_i);
                if (__pyx_t_68) {
                  __pyx_t_68 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_69 = (__pyx_t_68 != 0);
                if (__pyx_t_69) {
                } else {
                  __pyx_t_19 = __pyx_t_69;
                  goto __pyx_L26_bool_binop_done;
                }
                __pyx_t_69 = (0 <= __pyx_v_j);
                if (__pyx_t_69) {
                  __pyx_t_69 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_68 = (__pyx_t_69 != 0);
                __pyx_t_19 = __pyx_t_68;
                __pyx_L26_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+0233:                                     if I[i, j] == 0:
                  __pyx_t_67 = __pyx_v_i;
                  __pyx_t_66 = __pyx_v_j;
                  __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_19) {
/* … */
                  }
+0234:                                         if i > 0:
                    __pyx_t_19 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_19) {
/* … */
                      goto __pyx_L29;
                    }
+0235:                                             PN = I[i - 1, j]
                      __pyx_t_70 = (__pyx_v_i - 1);
                      __pyx_t_71 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_I.diminfo[1].strides));
 0236:                                         else:
+0237:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L29:;
+0238:                                         if j > 0:
                    __pyx_t_19 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_19) {
/* … */
                      goto __pyx_L30;
                    }
+0239:                                             PW = I[i, j - 1]
                      __pyx_t_72 = __pyx_v_i;
                      __pyx_t_73 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_I.diminfo[1].strides));
 0240:                                         else:
+0241:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L30:;
+0242:                                         if PN == Io or PW == Io:
                    __pyx_t_68 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_68) {
                    } else {
                      __pyx_t_19 = __pyx_t_68;
                      goto __pyx_L32_bool_binop_done;
                    }
                    __pyx_t_68 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    __pyx_t_19 = __pyx_t_68;
                    __pyx_L32_bool_binop_done:;
                    if (__pyx_t_19) {
/* … */
                    }
+0243:                                             I[i, j] = Io
                      __pyx_t_74 = __pyx_v_i;
                      __pyx_t_75 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0244:                                             Col[i, j, 2] = red
                      __pyx_t_76 = __pyx_v_i;
                      __pyx_t_77 = __pyx_v_j;
                      __pyx_t_78 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0245:                                             Col[i, j, 1] = green
                      __pyx_t_79 = __pyx_v_i;
                      __pyx_t_80 = __pyx_v_j;
                      __pyx_t_81 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_80, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_81, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0246:                                             Col[i, j, 0] = blue
                      __pyx_t_82 = __pyx_v_i;
                      __pyx_t_83 = __pyx_v_j;
                      __pyx_t_84 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_83, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_84, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0247:                                             a[k] = 1
                      __pyx_t_85 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0248: 
+0249:                                 i, j = xo - deli, yo + delj
                __pyx_t_86 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_87 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_86;
                __pyx_v_j = __pyx_t_87;
+0250:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_68 = (0 <= __pyx_v_i);
                if (__pyx_t_68) {
                  __pyx_t_68 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_69 = (__pyx_t_68 != 0);
                if (__pyx_t_69) {
                } else {
                  __pyx_t_19 = __pyx_t_69;
                  goto __pyx_L35_bool_binop_done;
                }
                __pyx_t_69 = (0 <= __pyx_v_j);
                if (__pyx_t_69) {
                  __pyx_t_69 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_68 = (__pyx_t_69 != 0);
                __pyx_t_19 = __pyx_t_68;
                __pyx_L35_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+0251:                                     if I[i, j] == 0:
                  __pyx_t_87 = __pyx_v_i;
                  __pyx_t_86 = __pyx_v_j;
                  __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_19) {
/* … */
                  }
+0252:                                         if i < m - 1:
                    __pyx_t_19 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_19) {
/* … */
                      goto __pyx_L38;
                    }
+0253:                                             PS = I[i + 1, j]
                      __pyx_t_88 = (__pyx_v_i + 1);
                      __pyx_t_89 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_I.diminfo[1].strides));
 0254:                                         else:
+0255:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L38:;
+0256:                                         if j > 0:
                    __pyx_t_19 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_19) {
/* … */
                      goto __pyx_L39;
                    }
+0257:                                             PW = I[i, j - 1]
                      __pyx_t_90 = __pyx_v_i;
                      __pyx_t_91 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_91, __pyx_pybuffernd_I.diminfo[1].strides));
 0258:                                         else:
+0259:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L39:;
+0260:                                         if PW == Io or PS == Io:
                    __pyx_t_68 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_68) {
                    } else {
                      __pyx_t_19 = __pyx_t_68;
                      goto __pyx_L41_bool_binop_done;
                    }
                    __pyx_t_68 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_19 = __pyx_t_68;
                    __pyx_L41_bool_binop_done:;
                    if (__pyx_t_19) {
/* … */
                    }
+0261:                                             I[i, j] = Io
                      __pyx_t_92 = __pyx_v_i;
                      __pyx_t_93 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0262:                                             Col[i, j, 2] = red
                      __pyx_t_94 = __pyx_v_i;
                      __pyx_t_95 = __pyx_v_j;
                      __pyx_t_96 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_95, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_96, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0263:                                             Col[i, j, 1] = green
                      __pyx_t_97 = __pyx_v_i;
                      __pyx_t_98 = __pyx_v_j;
                      __pyx_t_99 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0264:                                             Col[i, j, 0] = blue
                      __pyx_t_100 = __pyx_v_i;
                      __pyx_t_101 = __pyx_v_j;
                      __pyx_t_102 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_101, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_102, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0265:                                             a[k] = 1
                      __pyx_t_103 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0266: 
+0267:                                 i, j = xo - deli, yo - delj
                __pyx_t_104 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_105 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_104;
                __pyx_v_j = __pyx_t_105;
+0268:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_68 = (0 <= __pyx_v_i);
                if (__pyx_t_68) {
                  __pyx_t_68 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_69 = (__pyx_t_68 != 0);
                if (__pyx_t_69) {
                } else {
                  __pyx_t_19 = __pyx_t_69;
                  goto __pyx_L44_bool_binop_done;
                }
                __pyx_t_69 = (0 <= __pyx_v_j);
                if (__pyx_t_69) {
                  __pyx_t_69 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_68 = (__pyx_t_69 != 0);
                __pyx_t_19 = __pyx_t_68;
                __pyx_L44_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+0269:                                     if I[i, j] == 0:
                  __pyx_t_105 = __pyx_v_i;
                  __pyx_t_104 = __pyx_v_j;
                  __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_104, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_19) {
/* … */
                  }
+0270:                                         if i < m - 1:
                    __pyx_t_19 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_19) {
/* … */
                      goto __pyx_L47;
                    }
+0271:                                             PS = I[i + 1, j]
                      __pyx_t_106 = (__pyx_v_i + 1);
                      __pyx_t_107 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_I.diminfo[1].strides));
 0272:                                         else:
+0273:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L47:;
+0274:                                         if j < n - 1:
                    __pyx_t_19 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_19) {
/* … */
                      goto __pyx_L48;
                    }
+0275:                                             PE = I[i, j + 1]
                      __pyx_t_108 = __pyx_v_i;
                      __pyx_t_109 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_I.diminfo[1].strides));
 0276:                                         else:
+0277:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L48:;
+0278:                                         if PE == Io or PS == Io:
                    __pyx_t_68 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_68) {
                    } else {
                      __pyx_t_19 = __pyx_t_68;
                      goto __pyx_L50_bool_binop_done;
                    }
                    __pyx_t_68 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_19 = __pyx_t_68;
                    __pyx_L50_bool_binop_done:;
                    if (__pyx_t_19) {
/* … */
                    }
+0279:                                             I[i, j] = Io
                      __pyx_t_110 = __pyx_v_i;
                      __pyx_t_111 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_111, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0280:                                             Col[i, j, 2] = red
                      __pyx_t_112 = __pyx_v_i;
                      __pyx_t_113 = __pyx_v_j;
                      __pyx_t_114 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_114, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0281:                                             Col[i, j, 1] = green
                      __pyx_t_115 = __pyx_v_i;
                      __pyx_t_116 = __pyx_v_j;
                      __pyx_t_117 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0282:                                             Col[i, j, 0] = blue
                      __pyx_t_118 = __pyx_v_i;
                      __pyx_t_119 = __pyx_v_j;
                      __pyx_t_120 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_119, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_120, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0283:                                             a[k] = 1
                      __pyx_t_121 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0284: 
+0285:                                 i, j = xo + deli, yo - delj
                __pyx_t_122 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_123 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_122;
                __pyx_v_j = __pyx_t_123;
+0286:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_68 = (0 <= __pyx_v_i);
                if (__pyx_t_68) {
                  __pyx_t_68 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_69 = (__pyx_t_68 != 0);
                if (__pyx_t_69) {
                } else {
                  __pyx_t_19 = __pyx_t_69;
                  goto __pyx_L53_bool_binop_done;
                }
                __pyx_t_69 = (0 <= __pyx_v_j);
                if (__pyx_t_69) {
                  __pyx_t_69 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_68 = (__pyx_t_69 != 0);
                __pyx_t_19 = __pyx_t_68;
                __pyx_L53_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+0287:                                     if I[i, j] == 0:
                  __pyx_t_123 = __pyx_v_i;
                  __pyx_t_122 = __pyx_v_j;
                  __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_19) {
/* … */
                  }
+0288:                                         if i > 0:
                    __pyx_t_19 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_19) {
/* … */
                      goto __pyx_L56;
                    }
+0289:                                             PN = I[i - 1, j]
                      __pyx_t_124 = (__pyx_v_i - 1);
                      __pyx_t_125 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_I.diminfo[1].strides));
 0290:                                         else:
+0291:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L56:;
+0292:                                         if j < n - 1:
                    __pyx_t_19 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_19) {
/* … */
                      goto __pyx_L57;
                    }
+0293:                                             PE = I[i, j + 1]
                      __pyx_t_126 = __pyx_v_i;
                      __pyx_t_127 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_127, __pyx_pybuffernd_I.diminfo[1].strides));
 0294:                                         else:
+0295:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L57:;
+0296:                                         if PN == Io or PE == Io:
                    __pyx_t_68 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_68) {
                    } else {
                      __pyx_t_19 = __pyx_t_68;
                      goto __pyx_L59_bool_binop_done;
                    }
                    __pyx_t_68 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    __pyx_t_19 = __pyx_t_68;
                    __pyx_L59_bool_binop_done:;
                    if (__pyx_t_19) {
/* … */
                    }
+0297:                                             I[i, j] = Io
                      __pyx_t_128 = __pyx_v_i;
                      __pyx_t_129 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_128, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_129, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0298:                                             Col[i, j, 2] = red
                      __pyx_t_130 = __pyx_v_i;
                      __pyx_t_131 = __pyx_v_j;
                      __pyx_t_132 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0299:                                             Col[i, j, 1] = green
                      __pyx_t_133 = __pyx_v_i;
                      __pyx_t_134 = __pyx_v_j;
                      __pyx_t_135 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_135, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0300:                                             Col[i, j, 0] = blue
                      __pyx_t_136 = __pyx_v_i;
                      __pyx_t_137 = __pyx_v_j;
                      __pyx_t_138 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_136, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0301:                                             a[k] = 1
                      __pyx_t_139 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_139, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0302: 
+0303:             showriteframe(sa, sf, fd, r, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_r, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+0304:             r = r + 1
      __pyx_v_r = (__pyx_v_r + 1);
    }
 0305: 
+0306:         if asy == 0:
    __pyx_t_19 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_19) {
/* … */
    }
+0307:             break
      goto __pyx_L12_break;
 0308:         else:
+0309:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_7 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 309, __pyx_L1_error)
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_all); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 309, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_23 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 309, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_23, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 309, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_19) {
/* … */
      }
+0310:                 break
        goto __pyx_L12_break;
 0311:             else:
+0312:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 312, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+0313:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7);
        __pyx_t_4 = 0;
        __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 313, __pyx_L1_error)
        __pyx_t_8 = ((PyArrayObject *)__pyx_t_6);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 313, __pyx_L1_error)
        }
        __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;
+0314:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 314, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ones); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 314, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 314, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 314, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 314, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 314, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 314, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 314, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 314, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 314, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 314, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
+0315:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_centroids); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_23 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_5 = NULL;
        __pyx_t_22 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_22 = 1;
          }
        }
        __pyx_t_21 = PyTuple_New(4+__pyx_t_22); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_21);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_21, 0+__pyx_t_22, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_21, 1+__pyx_t_22, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_21, 2+__pyx_t_22, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_23);
        PyTuple_SET_ITEM(__pyx_t_21, 3+__pyx_t_22, __pyx_t_23);
        __pyx_t_6 = 0;
        __pyx_t_1 = 0;
        __pyx_t_23 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_21, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
          PyObject* sequence = __pyx_t_4;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 315, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_21 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_21 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_21);
          #else
          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 315, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_21 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 315, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_21);
          #endif
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_23 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 315, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_20 = Py_TYPE(__pyx_t_23)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_20(__pyx_t_23); if (unlikely(!__pyx_t_7)) goto __pyx_L63_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_21 = __pyx_t_20(__pyx_t_23); if (unlikely(!__pyx_t_21)) goto __pyx_L63_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_21);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_23), 2) < 0) __PYX_ERR(0, 315, __pyx_L1_error)
          __pyx_t_20 = NULL;
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          goto __pyx_L64_unpacking_done;
          __pyx_L63_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_20 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 315, __pyx_L1_error)
          __pyx_L64_unpacking_done:;
        }
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 315, __pyx_L1_error)
        if (!(likely(((__pyx_t_21) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_21, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 315, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 315, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_21);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 315, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_21));
        __pyx_t_21 = 0;
+0316:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 0317: 
+0318:     toc = time.time()
  __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_21, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  __pyx_t_21 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_21)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_21);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_21) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_21); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 318, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 318, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 318, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_toc = __pyx_t_18;
+0319:     obj.exetime = toc - tic
  __pyx_t_4 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_4) < 0) __PYX_ERR(0, 319, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0320:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 320, __pyx_L1_error)
+0321:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 321, __pyx_L1_error)
+0322:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 322, __pyx_L1_error)
+0323:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 323, __pyx_L1_error)
+0324:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 0325: 
+0326: def Evolve_2D_Isotropic_SiteSaturated_with_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_7Evolve_2D_Isotropic_SiteSaturated_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_7Evolve_2D_Isotropic_SiteSaturated_with_gr2D = {"Evolve_2D_Isotropic_SiteSaturated_with_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_7Evolve_2D_Isotropic_SiteSaturated_with_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_7Evolve_2D_Isotropic_SiteSaturated_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Isotropic_SiteSaturated_with_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_6Evolve_2D_Isotropic_SiteSaturated_with_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_6Evolve_2D_Isotropic_SiteSaturated_with_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PY_LONG_LONG __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_gr2D = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  long __pyx_v_i;
  long __pyx_v_j;
  long __pyx_v_deli;
  long __pyx_v_delj;
  long __pyx_v_xo;
  long __pyx_v_yo;
  long __pyx_v_PN;
  long __pyx_v_PE;
  long __pyx_v_PW;
  long __pyx_v_PS;
  long __pyx_v_k;
  long __pyx_v_Io;
  long __pyx_v_countim;
  long __pyx_v_win;
  long __pyx_v_xmin;
  long __pyx_v_xmax;
  long __pyx_v_ymin;
  long __pyx_v_ymax;
  long __pyx_v_rmax;
  long __pyx_v_Iter;
  float __pyx_v_rad;
  float __pyx_v_dr;
  float __pyx_v_tmp;
  float __pyx_v_gr2DValmax;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_gr2DVal = 0;
  PyArrayObject *__pyx_v_r = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_gr2DVal;
  __Pyx_Buffer __pyx_pybuffer_gr2DVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_r;
  __Pyx_Buffer __pyx_pybuffer_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Isotropic_SiteSaturated_with_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_gr2DVal.pybuffer.buf = NULL;
  __pyx_pybuffer_gr2DVal.refcount = 0;
  __pyx_pybuffernd_gr2DVal.data = NULL;
  __pyx_pybuffernd_gr2DVal.rcbuffer = &__pyx_pybuffer_gr2DVal;
  __pyx_pybuffer_r.pybuffer.buf = NULL;
  __pyx_pybuffer_r.refcount = 0;
  __pyx_pybuffernd_r.data = NULL;
  __pyx_pybuffernd_r.rcbuffer = &__pyx_pybuffer_r;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_25);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Isotropic_SiteSaturated_with_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_gr2D);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_gr2DVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__17 = PyTuple_Pack(51, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_gr2D, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_k, __pyx_n_s_Io, __pyx_n_s_countim, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_rmax, __pyx_n_s_Iter, __pyx_n_s_rad, __pyx_n_s_dr, __pyx_n_s_tmp, __pyx_n_s_gr2DValmax, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_gr2DVal, __pyx_n_s_r, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__17);
  __Pyx_GIVEREF(__pyx_tuple__17);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_7Evolve_2D_Isotropic_SiteSaturated_with_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Isotropic_SiteSaturate_2, __pyx_t_2) < 0) __PYX_ERR(0, 326, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 51, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Isotropic_SiteSaturate_2, 326, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 326, __pyx_L1_error)
 0327:     # Grabbing data from the input object
+0328:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 328, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+0329:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+0330:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 330, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+0331:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 331, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+0332:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 332, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+0333:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 333, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+0334:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 334, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_3;
+0335:     cdef long long asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_2;
+0336:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 336, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_3;
+0337:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+0338:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+0339:     gr2D = obj.gr2D
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_gr2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_gr2D = __pyx_t_1;
  __pyx_t_1 = 0;
 0340: 
 0341:     # Declaring other variables
 0342:     cdef double tic, toc
 0343:     cdef long i, j, deli, delj, xo, yo, PN, PE, PW, PS , k, Io, countim, win, xmin, xmax, ymin, ymax, rmax, Iter
 0344:     cdef float rad, dr, tmp, gr2DValmax, red, green, blue
+0345:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 345, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 345, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+0346:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 346, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 346, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+0347:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 347, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 347, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 347, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+0348:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 348, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 348, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 348, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+0349:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 349, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 349, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+0350:     cdef np.ndarray[np.float64_t, ndim = 1] gr2DVal = np.zeros(p, dtype=np.float64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 350, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_gr2DVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 350, __pyx_L1_error)
    } else {__pyx_pybuffernd_gr2DVal.diminfo[0].strides = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_gr2DVal.diminfo[0].shape = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_gr2DVal = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+0351:     cdef np.ndarray[np.float64_t, ndim = 1] r = np.zeros(p, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 351, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 351, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_r.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 351, __pyx_L1_error)
    } else {__pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_r = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+0352:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 352, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 352, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+0353:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 353, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 353, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 353, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+0354:     plantseed(myseed)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 354, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 0355: 
+0356:     col = np.random.random((p, 3))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 356, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 356, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 356, __pyx_L1_error)
  }
  __pyx_t_16 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_7));
  __pyx_t_7 = 0;
+0357:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 357, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 357, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 357, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_tic = __pyx_t_20;
 0358: 
+0359:     if pdelNxy == []:
  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 359, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 359, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_21) {
/* … */
    goto __pyx_L3;
  }
+0360:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_4 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 360, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 360, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 360, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 360, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_22(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_5 = __pyx_t_22(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_6), 2) < 0) __PYX_ERR(0, 360, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 360, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 360, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 360, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 360, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
    __pyx_t_7 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 360, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 0361:     else:
+0362:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_23 = NULL;
    __pyx_t_24 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_23)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_23);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_24 = 1;
      }
    }
    __pyx_t_25 = PyTuple_New(7+__pyx_t_24); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    if (__pyx_t_23) {
      __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_23); __pyx_t_23 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_24, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_24, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_24, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_24, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_24, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_25, 5+__pyx_t_24, __pyx_t_1);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_25, 6+__pyx_t_24, __pyx_int_1);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_25, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 362, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_25 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_25 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_25);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_25 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_25 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_25)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_25);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_1), 2) < 0) __PYX_ERR(0, 362, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 362, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 362, __pyx_L1_error)
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 362, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 362, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
    __pyx_t_7 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 362, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
  }
  __pyx_L3:;
 0363: 
+0364:     if labelsorted == 1:
  __pyx_t_21 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_21) {
/* … */
  }
+0365:         X, Y = labelsort(n, X, Y)
    __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = NULL;
    __pyx_t_24 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_25);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_25, function);
        __pyx_t_24 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(3+__pyx_t_24); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_24, __pyx_t_7);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_24, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_24, ((PyObject *)__pyx_v_Y));
    __pyx_t_7 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 365, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_25 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_25 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_25 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_25 = __pyx_t_22(__pyx_t_7); if (unlikely(!__pyx_t_25)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_25);
      index = 1; __pyx_t_6 = __pyx_t_22(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_7), 2) < 0) __PYX_ERR(0, 365, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 365, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 365, __pyx_L1_error)
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 365, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 365, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 365, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;
 0366: 
 0367: 
 0368: 
+0369:     Iter = 1
  __pyx_v_Iter = 1;
+0370:     while True:
  while (1) {
+0371:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
      __pyx_v_k = __pyx_t_26;
+0372:             I[X[k], Y[k]] = k + 1
      __pyx_t_27 = __pyx_v_k;
      __pyx_t_28 = __pyx_v_k;
      __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_30 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+0373:             Col[X[k], Y[k], 2] = col[k, 0]
      __pyx_t_31 = __pyx_v_k;
      __pyx_t_32 = 0;
      __pyx_t_33 = __pyx_v_k;
      __pyx_t_34 = __pyx_v_k;
      __pyx_t_35 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_36 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_37 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_37, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_32, __pyx_pybuffernd_col.diminfo[1].strides));
+0374:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_38 = __pyx_v_k;
      __pyx_t_39 = 1;
      __pyx_t_40 = __pyx_v_k;
      __pyx_t_41 = __pyx_v_k;
      __pyx_t_42 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_43 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_41, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_44 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_39, __pyx_pybuffernd_col.diminfo[1].strides));
+0375:             Col[X[k], Y[k], 0] = col[k, 2]
      __pyx_t_45 = __pyx_v_k;
      __pyx_t_46 = 2;
      __pyx_t_47 = __pyx_v_k;
      __pyx_t_48 = __pyx_v_k;
      __pyx_t_49 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_50 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_51 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_46, __pyx_pybuffernd_col.diminfo[1].strides));
+0376:             gr2DVal[k] = gr2D(X[k], Y[k], k + 1)
      __pyx_t_52 = __pyx_v_k;
      __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 376, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_53 = __pyx_v_k;
      __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 376, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __pyx_t_7 = __Pyx_PyInt_From_long((__pyx_v_k + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 376, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_gr2D);
      __pyx_t_1 = __pyx_v_gr2D; __pyx_t_5 = NULL;
      __pyx_t_24 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_24 = 1;
        }
      }
      __pyx_t_23 = PyTuple_New(3+__pyx_t_24); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 376, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_24, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_25);
      PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_24, __pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_23, 2+__pyx_t_24, __pyx_t_7);
      __pyx_t_6 = 0;
      __pyx_t_25 = 0;
      __pyx_t_7 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_23, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 376, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_54 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_54 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_55 = __pyx_v_k;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_gr2DVal.diminfo[0].strides) = __pyx_t_54;
    }
 0377: 
+0378:         gr2DValmax = max(gr2DVal)
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_gr2DVal));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_gr2DVal));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_gr2DVal));
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_56 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_56 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 378, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_gr2DValmax = __pyx_t_56;
+0379:         countim = 0
    __pyx_v_countim = 0;
+0380:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+0381:         countim = 1
    __pyx_v_countim = 1;
+0382:         rmax = 0
    __pyx_v_rmax = 0;
 0383: 
+0384:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+0385:         r = np.zeros(p, dtype=np.float64)
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_23 = PyTuple_New(1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_25) < 0) __PYX_ERR(0, 385, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_23, __pyx_t_1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 385, __pyx_L1_error)
    __pyx_t_14 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_v_r, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 385, __pyx_L1_error)
    }
    __pyx_t_14 = 0;
    __Pyx_DECREF_SET(__pyx_v_r, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
 0386: 
+0387:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_23);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_23, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_25 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
      } else {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_4, NULL); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_23 = PyObject_RichCompare(__pyx_t_25, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 387, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_23); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 387, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      if (!__pyx_t_21) break;
 0388: 
+0389:             gr2DValmax = 0
      __pyx_v_gr2DValmax = 0.0;
+0390:             for i in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
        __pyx_v_i = __pyx_t_26;
+0391:                 if a[i] == 1:
        __pyx_t_57 = __pyx_v_i;
        __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_21) {
/* … */
        }
      }
+0392:                     tmp = gr2DVal[i]
          __pyx_t_58 = __pyx_v_i;
          __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_gr2DVal.diminfo[0].strides));
+0393:                     if tmp > gr2DValmax:
          __pyx_t_21 = ((__pyx_v_tmp > __pyx_v_gr2DValmax) != 0);
          if (__pyx_t_21) {
/* … */
          }
+0394:                         gr2DValmax = tmp
            __pyx_v_gr2DValmax = __pyx_v_tmp;
 0395: 
 0396: 
+0397:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
        __pyx_v_k = __pyx_t_26;
+0398:                 if a[k] == 1:
        __pyx_t_59 = __pyx_v_k;
        __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_21) {
/* … */
        }
      }
+0399:                     xo = X[k]
          __pyx_t_60 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_X.diminfo[0].strides));
+0400:                     yo = Y[k]
          __pyx_t_61 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_Y.diminfo[0].strides));
+0401:                     Io = I[xo, yo]
          __pyx_t_62 = __pyx_v_xo;
          __pyx_t_63 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_I.diminfo[1].strides));
+0402:                     dr = gr2DVal[k] / gr2DValmax
          __pyx_t_64 = __pyx_v_k;
          __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_gr2DVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_gr2DValmax));
+0403:                     r[k] = r[k] + dr
          __pyx_t_65 = __pyx_v_k;
          __pyx_t_66 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_r.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_r.diminfo[0].strides)) + __pyx_v_dr);
+0404:                     rad = r[k]
          __pyx_t_67 = __pyx_v_k;
          __pyx_v_rad = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_r.diminfo[0].strides));
+0405:                     a[k] = 0
          __pyx_t_68 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+0406:                     rmax = math.ceil(rad)
          __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_ceil); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_25 = PyFloat_FromDouble(__pyx_v_rad); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_1) {
            __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 406, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
            __Pyx_GOTREF(__pyx_t_23);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 406, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_25);
            __pyx_t_25 = 0;
            __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 406, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_69 = __Pyx_PyInt_As_long(__pyx_t_23); if (unlikely((__pyx_t_69 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 406, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_v_rmax = __pyx_t_69;
+0407:                     red = col[k, 0]
          __pyx_t_70 = __pyx_v_k;
          __pyx_t_71 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_col.diminfo[1].strides));
+0408:                     green = col[k, 1]
          __pyx_t_72 = __pyx_v_k;
          __pyx_t_73 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_col.diminfo[1].strides));
+0409:                     blue = col[k, 2]
          __pyx_t_74 = __pyx_v_k;
          __pyx_t_75 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_col.diminfo[1].strides));
 0410: 
 0411:                     # OUTWARD                                   
+0412:                     for deli in range(rmax + 1):
          __pyx_t_69 = (__pyx_v_rmax + 1);
          for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_69; __pyx_t_76+=1) {
            __pyx_v_deli = __pyx_t_76;
+0413:                         for delj in range(rmax + 1):
            __pyx_t_77 = (__pyx_v_rmax + 1);
            for (__pyx_t_78 = 0; __pyx_t_78 < __pyx_t_77; __pyx_t_78+=1) {
              __pyx_v_delj = __pyx_t_78;
 0414: 
+0415:                             if deli ** 2 + delj ** 2 <= (rad + 0.5) ** 2:
              __pyx_t_21 = (((__Pyx_pow_long(__pyx_v_deli, 2) + __Pyx_pow_long(__pyx_v_delj, 2)) <= pow((__pyx_v_rad + 0.5), 2.0)) != 0);
              if (__pyx_t_21) {
/* … */
              }
            }
          }
 0416: 
+0417:                                 i, j = xo + deli, yo + delj
                __pyx_t_79 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_80 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_79;
                __pyx_v_j = __pyx_t_80;
+0418:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_81 = (0 <= __pyx_v_i);
                if (__pyx_t_81) {
                  __pyx_t_81 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_81 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L30_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_81 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_81;
                __pyx_L30_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+0419:                                     if I[i, j] == 0:
                  __pyx_t_83 = __pyx_v_i;
                  __pyx_t_84 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_84, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+0420:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L33;
                    }
+0421:                                             PN = I[i - 1, j]
                      __pyx_t_85 = (__pyx_v_i - 1);
                      __pyx_t_86 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides));
 0422:                                         else:
+0423:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L33:;
+0424:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L34;
                    }
+0425:                                             PE = I[i, j + 1]
                      __pyx_t_87 = __pyx_v_i;
                      __pyx_t_88 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_88, __pyx_pybuffernd_I.diminfo[1].strides));
 0426:                                         else:
+0427:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L34:;
+0428:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L35;
                    }
+0429:                                             PW = I[i, j - 1]
                      __pyx_t_89 = __pyx_v_i;
                      __pyx_t_90 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_90, __pyx_pybuffernd_I.diminfo[1].strides));
 0430:                                         else:
+0431:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L35:;
+0432:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L36;
                    }
+0433:                                             PS = I[i + 1, j]
                      __pyx_t_91 = (__pyx_v_i + 1);
                      __pyx_t_92 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_92, __pyx_pybuffernd_I.diminfo[1].strides));
 0434:                                         else:
+0435:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L36:;
+0436:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_81 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L38_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L38_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L38_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_81;
                    __pyx_L38_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+0437:                                             I[i, j] = Io
                      __pyx_t_93 = __pyx_v_i;
                      __pyx_t_94 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0438:                                             Col[i, j, 2] = red
                      __pyx_t_95 = __pyx_v_i;
                      __pyx_t_96 = __pyx_v_j;
                      __pyx_t_97 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_96, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_97, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0439:                                             Col[i, j, 1] = green
                      __pyx_t_98 = __pyx_v_i;
                      __pyx_t_99 = __pyx_v_j;
                      __pyx_t_100 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0440:                                             Col[i, j, 0] = blue
                      __pyx_t_101 = __pyx_v_i;
                      __pyx_t_102 = __pyx_v_j;
                      __pyx_t_103 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_103, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0441:                                             a[k] = 1
                      __pyx_t_104 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0442: 
 0443: 
 0444: 
 0445: 
 0446: 
+0447:                                 i, j = xo - deli, yo + delj
                __pyx_t_80 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_79 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_80;
                __pyx_v_j = __pyx_t_79;
+0448:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_81 = (0 <= __pyx_v_i);
                if (__pyx_t_81) {
                  __pyx_t_81 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_81 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L43_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_81 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_81;
                __pyx_L43_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+0449:                                     if I[i, j] == 0:
                  __pyx_t_105 = __pyx_v_i;
                  __pyx_t_106 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+0450:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L46;
                    }
+0451:                                             PN = I[i - 1, j]
                      __pyx_t_107 = (__pyx_v_i - 1);
                      __pyx_t_108 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_I.diminfo[1].strides));
 0452:                                         else:
+0453:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L46:;
+0454:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L47;
                    }
+0455:                                             PE = I[i, j + 1]
                      __pyx_t_109 = __pyx_v_i;
                      __pyx_t_110 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_I.diminfo[1].strides));
 0456:                                         else:
+0457:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L47:;
+0458:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L48;
                    }
+0459:                                             PW = I[i, j - 1]
                      __pyx_t_111 = __pyx_v_i;
                      __pyx_t_112 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_I.diminfo[1].strides));
 0460:                                         else:
+0461:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L48:;
+0462:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L49;
                    }
+0463:                                             PS = I[i + 1, j]
                      __pyx_t_113 = (__pyx_v_i + 1);
                      __pyx_t_114 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_I.diminfo[1].strides));
 0464:                                         else:
+0465:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L49:;
+0466:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_81 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L51_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L51_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L51_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_81;
                    __pyx_L51_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+0467:                                             I[i, j] = Io
                      __pyx_t_115 = __pyx_v_i;
                      __pyx_t_116 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0468:                                             Col[i, j, 2] = red
                      __pyx_t_117 = __pyx_v_i;
                      __pyx_t_118 = __pyx_v_j;
                      __pyx_t_119 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_119, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0469:                                             Col[i, j, 1] = green
                      __pyx_t_120 = __pyx_v_i;
                      __pyx_t_121 = __pyx_v_j;
                      __pyx_t_122 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0470:                                             Col[i, j, 0] = blue
                      __pyx_t_123 = __pyx_v_i;
                      __pyx_t_124 = __pyx_v_j;
                      __pyx_t_125 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_124, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_125, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0471:                                             a[k] = 1
                      __pyx_t_126 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0472: 
 0473: 
 0474: 
 0475: 
 0476: 
+0477:                                 i, j = xo - deli, yo - delj
                __pyx_t_79 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_80 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_79;
                __pyx_v_j = __pyx_t_80;
+0478:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_81 = (0 <= __pyx_v_i);
                if (__pyx_t_81) {
                  __pyx_t_81 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_81 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L56_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_81 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_81;
                __pyx_L56_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+0479:                                     if I[i, j] == 0:
                  __pyx_t_127 = __pyx_v_i;
                  __pyx_t_128 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+0480:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L59;
                    }
+0481:                                             PN = I[i - 1, j]
                      __pyx_t_129 = (__pyx_v_i - 1);
                      __pyx_t_130 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_I.diminfo[1].strides));
 0482:                                         else:
+0483:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L59:;
+0484:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L60;
                    }
+0485:                                             PE = I[i, j + 1]
                      __pyx_t_131 = __pyx_v_i;
                      __pyx_t_132 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_I.diminfo[1].strides));
 0486:                                         else:
+0487:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L60:;
+0488:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L61;
                    }
+0489:                                             PW = I[i, j - 1]
                      __pyx_t_133 = __pyx_v_i;
                      __pyx_t_134 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides));
 0490:                                         else:
+0491:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L61:;
+0492:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L62;
                    }
+0493:                                             PS = I[i + 1, j]
                      __pyx_t_135 = (__pyx_v_i + 1);
                      __pyx_t_136 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides));
 0494:                                         else:
+0495:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L62:;
+0496:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_81 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L64_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L64_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L64_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_81;
                    __pyx_L64_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+0497:                                             I[i, j] = Io
                      __pyx_t_137 = __pyx_v_i;
                      __pyx_t_138 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0498:                                             Col[i, j, 2] = red
                      __pyx_t_139 = __pyx_v_i;
                      __pyx_t_140 = __pyx_v_j;
                      __pyx_t_141 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0499:                                             Col[i, j, 1] = green
                      __pyx_t_142 = __pyx_v_i;
                      __pyx_t_143 = __pyx_v_j;
                      __pyx_t_144 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0500:                                             Col[i, j, 0] = blue
                      __pyx_t_145 = __pyx_v_i;
                      __pyx_t_146 = __pyx_v_j;
                      __pyx_t_147 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0501:                                             a[k] = 1
                      __pyx_t_148 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0502: 
 0503: 
 0504: 
 0505: 
+0506:                                 i, j = xo + deli, yo - delj
                __pyx_t_80 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_79 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_80;
                __pyx_v_j = __pyx_t_79;
+0507:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_81 = (0 <= __pyx_v_i);
                if (__pyx_t_81) {
                  __pyx_t_81 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_81 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L69_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_81 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_81;
                __pyx_L69_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+0508:                                     if I[i, j] == 0:
                  __pyx_t_149 = __pyx_v_i;
                  __pyx_t_150 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_150, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+0509:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L72;
                    }
+0510:                                             PN = I[i - 1, j]
                      __pyx_t_151 = (__pyx_v_i - 1);
                      __pyx_t_152 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides));
 0511:                                         else:
+0512:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L72:;
+0513:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L73;
                    }
+0514:                                             PE = I[i, j + 1]
                      __pyx_t_153 = __pyx_v_i;
                      __pyx_t_154 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides));
 0515:                                         else:
+0516:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L73:;
+0517:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L74;
                    }
+0518:                                             PW = I[i, j - 1]
                      __pyx_t_155 = __pyx_v_i;
                      __pyx_t_156 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides));
 0519:                                         else:
+0520:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L74:;
+0521:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L75;
                    }
+0522:                                             PS = I[i + 1, j]
                      __pyx_t_157 = (__pyx_v_i + 1);
                      __pyx_t_158 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_I.diminfo[1].strides));
 0523:                                         else:
+0524:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L75:;
+0525:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_81 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L77_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L77_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L77_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_81;
                    __pyx_L77_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+0526:                                             I[i, j] = Io
                      __pyx_t_159 = __pyx_v_i;
                      __pyx_t_160 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0527:                                             Col[i, j, 2] = red
                      __pyx_t_161 = __pyx_v_i;
                      __pyx_t_162 = __pyx_v_j;
                      __pyx_t_163 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0528:                                             Col[i, j, 1] = green
                      __pyx_t_164 = __pyx_v_i;
                      __pyx_t_165 = __pyx_v_j;
                      __pyx_t_166 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0529:                                             Col[i, j, 0] = blue
                      __pyx_t_167 = __pyx_v_i;
                      __pyx_t_168 = __pyx_v_j;
                      __pyx_t_169 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_168, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0530:                                             a[k] = 1
                      __pyx_t_170 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0531: 
 0532: 
+0533:                     if a[k] == 0:
          __pyx_t_171 = __pyx_v_k;
          __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_21) {
/* … */
          }
+0534:                         win = rmax
            __pyx_v_win = __pyx_v_rmax;
+0535:                         xmin = max(0, xo - win)
            __pyx_t_69 = (__pyx_v_xo - __pyx_v_win);
            __pyx_t_76 = 0;
            if (((__pyx_t_69 > __pyx_t_76) != 0)) {
              __pyx_t_77 = __pyx_t_69;
            } else {
              __pyx_t_77 = __pyx_t_76;
            }
            __pyx_v_xmin = __pyx_t_77;
+0536:                         xmax = min(m - 1, xo + win)
            __pyx_t_77 = (__pyx_v_xo + __pyx_v_win);
            __pyx_t_172 = (__pyx_v_m - 1);
            if (((__pyx_t_77 < __pyx_t_172) != 0)) {
              __pyx_t_173 = __pyx_t_77;
            } else {
              __pyx_t_173 = __pyx_t_172;
            }
            __pyx_v_xmax = __pyx_t_173;
+0537:                         ymin = max(0, yo - win)
            __pyx_t_77 = (__pyx_v_yo - __pyx_v_win);
            __pyx_t_69 = 0;
            if (((__pyx_t_77 > __pyx_t_69) != 0)) {
              __pyx_t_76 = __pyx_t_77;
            } else {
              __pyx_t_76 = __pyx_t_69;
            }
            __pyx_v_ymin = __pyx_t_76;
+0538:                         ymax = min(n - 1, yo + win)
            __pyx_t_76 = (__pyx_v_yo + __pyx_v_win);
            __pyx_t_173 = (__pyx_v_n - 1);
            if (((__pyx_t_76 < __pyx_t_173) != 0)) {
              __pyx_t_172 = __pyx_t_76;
            } else {
              __pyx_t_172 = __pyx_t_173;
            }
            __pyx_v_ymax = __pyx_t_172;
+0539:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_174 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_174, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 0540: 
 0541: 
 0542: 
+0543:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+0544:             countim = countim + 1
      __pyx_v_countim = (__pyx_v_countim + 1);
    }
+0545:         if asy == 0:
    __pyx_t_21 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_21) {
/* … */
    }
+0546:             break
      goto __pyx_L12_break;
 0547:         else:
+0548:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 548, __pyx_L1_error)
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_all); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 548, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (__pyx_t_4) {
        __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 548, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        __pyx_t_23 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 548, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyInt_EqObjC(__pyx_t_23, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 548, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 548, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_21) {
/* … */
      }
+0549:                 break
        goto __pyx_L12_break;
 0550:             else:
+0551:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 551, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+0552:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_25 = PyTuple_New(2); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_25, 1, __pyx_t_4);
        __pyx_t_7 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_25);
        __pyx_t_25 = 0;
        __pyx_t_25 = PyDict_New(); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (PyDict_SetItem(__pyx_t_25, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_4, __pyx_t_25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 552, __pyx_L1_error)
        __pyx_t_8 = ((PyArrayObject *)__pyx_t_1);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 552, __pyx_L1_error)
        }
        __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_1));
        __pyx_t_1 = 0;
+0553:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_int8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 553, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 553, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 553, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
+0554:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_centroids); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_23 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_6 = NULL;
        __pyx_t_24 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_24 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(4+__pyx_t_24); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_24, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_24, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_24, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_23);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_24, __pyx_t_23);
        __pyx_t_1 = 0;
        __pyx_t_25 = 0;
        __pyx_t_23 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
          PyObject* sequence = __pyx_t_7;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 554, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 554, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 554, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_23 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 554, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_22 = Py_TYPE(__pyx_t_23)->tp_iternext;
          index = 0; __pyx_t_4 = __pyx_t_22(__pyx_t_23); if (unlikely(!__pyx_t_4)) goto __pyx_L84_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_4);
          index = 1; __pyx_t_5 = __pyx_t_22(__pyx_t_23); if (unlikely(!__pyx_t_5)) goto __pyx_L84_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_23), 2) < 0) __PYX_ERR(0, 554, __pyx_L1_error)
          __pyx_t_22 = NULL;
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          goto __pyx_L85_unpacking_done;
          __pyx_L84_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_22 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 554, __pyx_L1_error)
          __pyx_L85_unpacking_done:;
        }
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 554, __pyx_L1_error)
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 554, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 554, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 554, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+0555:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 0556: 
+0557:     toc = time.time()
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 557, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 557, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 557, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_toc = __pyx_t_20;
+0558:     obj.exetime = toc - tic
  __pyx_t_7 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_7) < 0) __PYX_ERR(0, 558, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0559:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 559, __pyx_L1_error)
+0560:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 560, __pyx_L1_error)
+0561:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 561, __pyx_L1_error)
+0562:     obj.gr2DVal = gr2DVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_gr2DVal, ((PyObject *)__pyx_v_gr2DVal)) < 0) __PYX_ERR(0, 562, __pyx_L1_error)
+0563:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 563, __pyx_L1_error)
+0564:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 0565: 
 0566: 
+0567: def Evolve_2D_Isotropic_Continuous_without_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_9Evolve_2D_Isotropic_Continuous_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_9Evolve_2D_Isotropic_Continuous_without_gr2D = {"Evolve_2D_Isotropic_Continuous_without_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_9Evolve_2D_Isotropic_Continuous_without_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_9Evolve_2D_Isotropic_Continuous_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Isotropic_Continuous_without_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_8Evolve_2D_Isotropic_Continuous_without_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_8Evolve_2D_Isotropic_Continuous_without_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_NdotIsoXY = NULL;
  PyObject *__pyx_v_GtIsoXY = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_rad;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_r = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_r;
  __Pyx_Buffer __pyx_pybuffer_r;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Isotropic_Continuous_without_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_r.pybuffer.buf = NULL;
  __pyx_pybuffer_r.refcount = 0;
  __pyx_pybuffernd_r.data = NULL;
  __pyx_pybuffernd_r.rcbuffer = &__pyx_pybuffer_r;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_48);
  __Pyx_XDECREF(__pyx_t_167);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Isotropic_Continuous_without_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_NdotIsoXY);
  __Pyx_XDECREF(__pyx_v_GtIsoXY);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__19 = PyTuple_Pack(54, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_NdotIsoXY, __pyx_n_s_GtIsoXY, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_rad, __pyx_n_s_countim, __pyx_n_s_w, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_Iter, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_dr, __pyx_n_s_tmp, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_r, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__19);
  __Pyx_GIVEREF(__pyx_tuple__19);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_9Evolve_2D_Isotropic_Continuous_without_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Isotropic_Continuous_w, __pyx_t_2) < 0) __PYX_ERR(0, 567, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 54, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Isotropic_Continuous_w, 567, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 567, __pyx_L1_error)
 0568:     # Grabbing data from the input object
+0569:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 569, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+0570:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+0571:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 571, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+0572:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 572, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+0573:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 573, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+0574:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+0575:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 575, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+0576:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 576, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+0577:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+0578:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+0579:     NdotIsoXY = obj.NdotIsoXY
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_NdotIsoXY); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_NdotIsoXY = __pyx_t_1;
  __pyx_t_1 = 0;
+0580:     GtIsoXY = obj.GtIsoXY
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_GtIsoXY); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_GtIsoXY = __pyx_t_1;
  __pyx_t_1 = 0;
+0581:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
 0582: 
 0583:     # Declaring other variables
 0584:     cdef double tic, toc
 0585:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, dp, nnz, rad, countim, w, xt, yt, i, j, k, xo, yo, Iter
 0586:     cdef float dt, f, t, dr, tmp, red, green, blue
+0587:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 587, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 587, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+0588:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.zeros(MN, dtype=np.int8)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 588, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 588, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 588, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+0589:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 589, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 589, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 589, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+0590:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 590, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 590, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+0591:     cdef np.ndarray[np.int64_t, ndim = 1] r = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 591, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_r.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 591, __pyx_L1_error)
    } else {__pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_r = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+0592:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 592, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 592, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+0593:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 593, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 593, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+0594:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 594, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 594, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+0595:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 595, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 595, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+0596:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 596, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 596, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0597:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 597, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 597, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 597, __pyx_L1_error)
  }
  __pyx_t_17 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_5));
  __pyx_t_5 = 0;
+0598:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 598, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 598, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 598, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_tic = __pyx_t_21;
 0599: 
 0600: 
+0601:     t = 0
  __pyx_v_t = 0.0;
+0602:     p = 0
  __pyx_v_p = 0;
+0603:     dp = 0
  __pyx_v_dp = 0;
+0604:     countim = 0
  __pyx_v_countim = 0;
+0605:     nnz = 0
  __pyx_v_nnz = 0;
 0606: 
+0607:     Iter = 1
  __pyx_v_Iter = 1;
+0608:     while nnz < MN:
  while (1) {
    __pyx_t_22 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_22) break;
+0609:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+0610:         dt = 1.0 / GtIsoXY(t)
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 610, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_v_GtIsoXY);
    __pyx_t_6 = __pyx_v_GtIsoXY; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 610, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_5, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 610, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 610, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_dt = __pyx_t_3;
+0611:         dp = int((1 - f) * NdotIsoXY(t) * dt)
    __pyx_t_6 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_NdotIsoXY);
    __pyx_t_8 = __pyx_v_NdotIsoXY; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 611, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_23 = PyTuple_New(1+1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_23, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_23, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 611, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_dp = __pyx_t_2;
+0612:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+0613:         if pdelNxy == []:
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 613, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 613, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_22 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_22 < 0)) __PYX_ERR(0, 613, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_22) {
/* … */
      goto __pyx_L5;
    }
+0614:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
      __pyx_t_24 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_22 = __pyx_t_24;
      __pyx_L7_bool_binop_done:;
      if (__pyx_t_22) {
/* … */
      }
+0615:                 count = 0
        __pyx_v_count = 0;
+0616:                 while count < dp:
        while (1) {
          __pyx_t_22 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_22) break;
+0617:                     xt = np.random.randint(0, m - 1)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 617, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 617, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 617, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 617, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_23 = NULL;
          __pyx_t_25 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_23)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_23);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
              __pyx_t_25 = 1;
            }
          }
          __pyx_t_1 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          if (__pyx_t_23) {
            __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_23); __pyx_t_23 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_25, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_25, __pyx_t_8);
          __pyx_t_8 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 617, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 617, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_xt = __pyx_t_2;
+0618:                     yt = np.random.randint(0, n - 1)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 618, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 618, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 618, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 618, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = NULL;
          __pyx_t_25 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
              __pyx_t_25 = 1;
            }
          }
          __pyx_t_23 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 618, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_8); __pyx_t_8 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_25, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_25, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_23, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 618, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 618, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_yt = __pyx_t_2;
+0619:                     if I[xt, yt] == 0:
          __pyx_t_2 = __pyx_v_xt;
          __pyx_t_26 = __pyx_v_yt;
          __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_26, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_22) {
/* … */
          }
        }
+0620:                         I[xt, yt] = p + count + 1
            __pyx_t_27 = __pyx_v_xt;
            __pyx_t_28 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+0621:                         X[p + count] = xt
            __pyx_t_29 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+0622:                         Y[p + count] = yt
            __pyx_t_30 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+0623:                         a[p + count] = 1
            __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+0624:                         r[p + count] = 1
            __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_r.diminfo[0].strides) = 1;
+0625:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_34 = 0;
            __pyx_t_35 = __pyx_v_xt;
            __pyx_t_36 = __pyx_v_yt;
            __pyx_t_37 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_37, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_col.diminfo[1].strides));
+0626:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_38 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_39 = 1;
            __pyx_t_40 = __pyx_v_xt;
            __pyx_t_41 = __pyx_v_yt;
            __pyx_t_42 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_39, __pyx_pybuffernd_col.diminfo[1].strides));
+0627:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_43 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_44 = 2;
            __pyx_t_45 = __pyx_v_xt;
            __pyx_t_46 = __pyx_v_yt;
            __pyx_t_47 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_col.diminfo[1].strides));
+0628:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+0629:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 0630:         else:
+0631:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
    /*else*/ {
      __pyx_t_24 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_22 = __pyx_t_24;
      __pyx_L14_bool_binop_done:;
      if (__pyx_t_22) {
/* … */
      }
    }
    __pyx_L5:;
+0632:                 xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 632, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 632, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 632, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 632, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 632, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = NULL;
        __pyx_t_25 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_23);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_23, function);
            __pyx_t_25 = 1;
          }
        }
        __pyx_t_48 = PyTuple_New(7+__pyx_t_25); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 632, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_48);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_48, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_INCREF(__pyx_v_pdelNxy);
        __Pyx_GIVEREF(__pyx_v_pdelNxy);
        PyTuple_SET_ITEM(__pyx_t_48, 0+__pyx_t_25, __pyx_v_pdelNxy);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_48, 1+__pyx_t_25, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_48, 2+__pyx_t_25, __pyx_t_5);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_48, 3+__pyx_t_25, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_48, 4+__pyx_t_25, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_48, 5+__pyx_t_25, __pyx_t_8);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_48, 6+__pyx_t_25, __pyx_int_1);
        __pyx_t_5 = 0;
        __pyx_t_1 = 0;
        __pyx_t_8 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_48, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 632, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0;
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
          PyObject* sequence = __pyx_t_6;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 632, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_48 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_48 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_48);
          #else
          __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 632, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __pyx_t_48 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 632, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_48);
          #endif
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 632, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_49 = Py_TYPE(__pyx_t_8)->tp_iternext;
          index = 0; __pyx_t_23 = __pyx_t_49(__pyx_t_8); if (unlikely(!__pyx_t_23)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_23);
          index = 1; __pyx_t_48 = __pyx_t_49(__pyx_t_8); if (unlikely(!__pyx_t_48)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_48);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_49(__pyx_t_8), 2) < 0) __PYX_ERR(0, 632, __pyx_L1_error)
          __pyx_t_49 = NULL;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L18_unpacking_done;
          __pyx_L17_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_49 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 632, __pyx_L1_error)
          __pyx_L18_unpacking_done:;
        }
        if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 632, __pyx_L1_error)
        if (!(likely(((__pyx_t_48) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_48, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 632, __pyx_L1_error)
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_23);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
            }
          }
          __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 632, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_23));
        __pyx_t_23 = 0;
        __pyx_t_15 = ((PyArrayObject *)__pyx_t_48);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
            }
          }
          __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 632, __pyx_L1_error)
        }
        __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_48));
        __pyx_t_48 = 0;
+0633:                 w = 0
        __pyx_v_w = 0;
+0634:                 count = 0
        __pyx_v_count = 0;
+0635:                 while count < dp:
        while (1) {
          __pyx_t_22 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_22) break;
+0636:                     xt = xtrial[w]
          __pyx_t_50 = __pyx_v_w;
          __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+0637:                     yt = ytrial[w]
          __pyx_t_51 = __pyx_v_w;
          __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+0638:                     if I[xt, yt] == 0:
          __pyx_t_52 = __pyx_v_xt;
          __pyx_t_53 = __pyx_v_yt;
          __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_53, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_22) {
/* … */
          }
+0639:                         I[xt, yt] = p + count + 1
            __pyx_t_54 = __pyx_v_xt;
            __pyx_t_55 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+0640:                         X[p + count] = xt
            __pyx_t_56 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+0641:                         Y[p + count] = yt
            __pyx_t_57 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+0642:                         a[p + count] = 1
            __pyx_t_58 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+0643:                         r[p + count] = 1
            __pyx_t_59 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_r.diminfo[0].strides) = 1;
+0644:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_61 = 0;
            __pyx_t_62 = __pyx_v_xt;
            __pyx_t_63 = __pyx_v_yt;
            __pyx_t_64 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_64, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_61, __pyx_pybuffernd_col.diminfo[1].strides));
+0645:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_65 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_66 = 1;
            __pyx_t_67 = __pyx_v_xt;
            __pyx_t_68 = __pyx_v_yt;
            __pyx_t_69 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_69, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_col.diminfo[1].strides));
+0646:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_70 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_71 = 2;
            __pyx_t_72 = __pyx_v_xt;
            __pyx_t_73 = __pyx_v_yt;
            __pyx_t_74 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_74, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_col.diminfo[1].strides));
+0647:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+0648:                     if w < dp - 1:
          __pyx_t_22 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
          if (__pyx_t_22) {
/* … */
            goto __pyx_L22;
          }
+0649:                         w = w + 1
            __pyx_v_w = (__pyx_v_w + 1);
 0650:                     else:
+0651:                         xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          /*else*/ {
            __pyx_t_48 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 651, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_48);
            __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_48, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 651, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0;
            __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 651, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_48);
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 651, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = NULL;
            __pyx_t_25 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_23);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_23, function);
                __pyx_t_25 = 1;
              }
            }
            __pyx_t_7 = PyTuple_New(7+__pyx_t_25); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 651, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_INCREF(__pyx_v_pdelNxy);
            __Pyx_GIVEREF(__pyx_v_pdelNxy);
            PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_25, __pyx_v_pdelNxy);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_25, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_48);
            PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_25, __pyx_t_48);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_25, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_25, __pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_25, __pyx_t_1);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_25, __pyx_int_1);
            __pyx_t_48 = 0;
            __pyx_t_8 = 0;
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 651, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
            if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
              PyObject* sequence = __pyx_t_6;
              #if CYTHON_COMPILING_IN_CPYTHON
              Py_ssize_t size = Py_SIZE(sequence);
              #else
              Py_ssize_t size = PySequence_Size(sequence);
              #endif
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(0, 651, __pyx_L1_error)
              }
              #if CYTHON_COMPILING_IN_CPYTHON
              if (likely(PyTuple_CheckExact(sequence))) {
                __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
                __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
              } else {
                __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
                __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
              }
              __Pyx_INCREF(__pyx_t_23);
              __Pyx_INCREF(__pyx_t_7);
              #else
              __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 651, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_23);
              __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 651, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              #endif
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            } else {
              Py_ssize_t index = -1;
              __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_49 = Py_TYPE(__pyx_t_1)->tp_iternext;
              index = 0; __pyx_t_23 = __pyx_t_49(__pyx_t_1); if (unlikely(!__pyx_t_23)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_23);
              index = 1; __pyx_t_7 = __pyx_t_49(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_7);
              if (__Pyx_IternextUnpackEndCheck(__pyx_t_49(__pyx_t_1), 2) < 0) __PYX_ERR(0, 651, __pyx_L1_error)
              __pyx_t_49 = NULL;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              goto __pyx_L24_unpacking_done;
              __pyx_L23_unpacking_failed:;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_49 = NULL;
              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
              __PYX_ERR(0, 651, __pyx_L1_error)
              __pyx_L24_unpacking_done:;
            }
            if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 651, __pyx_L1_error)
            if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 651, __pyx_L1_error)
            __pyx_t_14 = ((PyArrayObject *)__pyx_t_23);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                }
              }
              __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 651, __pyx_L1_error)
            }
            __pyx_t_14 = 0;
            __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_23));
            __pyx_t_23 = 0;
            __pyx_t_15 = ((PyArrayObject *)__pyx_t_7);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                }
              }
              __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 651, __pyx_L1_error)
            }
            __pyx_t_15 = 0;
            __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_7));
            __pyx_t_7 = 0;
+0652:                         w = 0
            __pyx_v_w = 0;
          }
          __pyx_L22:;
        }
+0653:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 0654: 
+0655:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+0656:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 0657: 
+0658:         for k in range(0, p):
    __pyx_t_75 = __pyx_v_p;
    for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_75; __pyx_t_76+=1) {
      __pyx_v_k = __pyx_t_76;
+0659:             if a[k] == 1:
      __pyx_t_77 = __pyx_v_k;
      __pyx_t_22 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_22) {
/* … */
      }
    }
+0660:                 a[k] = 0
        __pyx_t_78 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+0661:                 xo = X[k]
        __pyx_t_79 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_79, __pyx_pybuffernd_X.diminfo[0].strides));
+0662:                 yo = Y[k]
        __pyx_t_80 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_Y.diminfo[0].strides));
+0663:                 Io = I[xo, yo]
        __pyx_t_81 = __pyx_v_xo;
        __pyx_t_82 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_82, __pyx_pybuffernd_I.diminfo[1].strides));
+0664:                 rad = r[k]
        __pyx_t_83 = __pyx_v_k;
        __pyx_v_rad = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_r.diminfo[0].strides));
+0665:                 red = col[k, 0]
        __pyx_t_84 = __pyx_v_k;
        __pyx_t_85 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_85, __pyx_pybuffernd_col.diminfo[1].strides));
+0666:                 green = col[k, 1]
        __pyx_t_86 = __pyx_v_k;
        __pyx_t_87 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_87, __pyx_pybuffernd_col.diminfo[1].strides));
+0667:                 blue = col[k, 2]
        __pyx_t_88 = __pyx_v_k;
        __pyx_t_89 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_col.diminfo[1].strides));
 0668: 
+0669:                 for deli in range(rad + 1):
        __pyx_t_90 = (__pyx_v_rad + 1);
        for (__pyx_t_91 = 0; __pyx_t_91 < __pyx_t_90; __pyx_t_91+=1) {
          __pyx_v_deli = __pyx_t_91;
+0670:                     for delj in range(rad + 1):
          __pyx_t_92 = (__pyx_v_rad + 1);
          for (__pyx_t_93 = 0; __pyx_t_93 < __pyx_t_92; __pyx_t_93+=1) {
            __pyx_v_delj = __pyx_t_93;
+0671:                         if (deli) ** 2 + (delj) ** 2 <= (rad + 0.5) ** 2:
            __pyx_t_22 = (((__Pyx_pow_PY_LONG_LONG(__pyx_v_deli, 2) + __Pyx_pow_PY_LONG_LONG(__pyx_v_delj, 2)) <= pow((__pyx_v_rad + 0.5), 2.0)) != 0);
            if (__pyx_t_22) {
/* … */
            }
          }
        }
+0672:                             i, j = xo + deli, yo + delj
              __pyx_t_94 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_95 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_94;
              __pyx_v_j = __pyx_t_95;
+0673:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L34_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L34_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+0674:                                 if I[i, j] == 0:
                __pyx_t_95 = __pyx_v_i;
                __pyx_t_94 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+0675:                                     if i > 0:
                  __pyx_t_22 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L37;
                  }
+0676:                                         PN = I[i - 1, j]
                    __pyx_t_97 = (__pyx_v_i - 1);
                    __pyx_t_98 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_98, __pyx_pybuffernd_I.diminfo[1].strides));
 0677:                                     else:
+0678:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L37:;
+0679:                                     if j > 0:
                  __pyx_t_22 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L38;
                  }
+0680:                                         PW = I[i, j - 1]
                    __pyx_t_99 = __pyx_v_i;
                    __pyx_t_100 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_100, __pyx_pybuffernd_I.diminfo[1].strides));
 0681:                                     else:
+0682:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L38:;
+0683:                                     if PN == Io or PW == Io:
                  __pyx_t_24 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L40_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L40_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+0684:                                         I[i, j] = Io
                    __pyx_t_101 = __pyx_v_i;
                    __pyx_t_102 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0685:                                         Col[i, j, 2] = red
                    __pyx_t_103 = __pyx_v_i;
                    __pyx_t_104 = __pyx_v_j;
                    __pyx_t_105 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_104, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_105, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0686:                                         Col[i, j, 1] = green
                    __pyx_t_106 = __pyx_v_i;
                    __pyx_t_107 = __pyx_v_j;
                    __pyx_t_108 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_108, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0687:                                         Col[i, j, 0] = blue
                    __pyx_t_109 = __pyx_v_i;
                    __pyx_t_110 = __pyx_v_j;
                    __pyx_t_111 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0688:                                         a[k] = 1
                    __pyx_t_112 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0689: 
+0690:                             i, j = xo - deli, yo + delj
              __pyx_t_113 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_114 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_113;
              __pyx_v_j = __pyx_t_114;
+0691:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L43_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L43_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+0692:                                 if I[i, j] == 0:
                __pyx_t_114 = __pyx_v_i;
                __pyx_t_113 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+0693:                                     if i < m - 1:
                  __pyx_t_22 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L46;
                  }
+0694:                                         PS = I[i + 1, j]
                    __pyx_t_115 = (__pyx_v_i + 1);
                    __pyx_t_116 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_I.diminfo[1].strides));
 0695:                                     else:
+0696:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L46:;
+0697:                                     if j > 0:
                  __pyx_t_22 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L47;
                  }
+0698:                                         PW = I[i, j - 1]
                    __pyx_t_117 = __pyx_v_i;
                    __pyx_t_118 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_I.diminfo[1].strides));
 0699:                                     else:
+0700:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L47:;
+0701:                                     if PW == Io or PS == Io:
                  __pyx_t_24 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L49_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L49_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+0702:                                         I[i, j] = Io
                    __pyx_t_119 = __pyx_v_i;
                    __pyx_t_120 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0703:                                         Col[i, j, 2] = red
                    __pyx_t_121 = __pyx_v_i;
                    __pyx_t_122 = __pyx_v_j;
                    __pyx_t_123 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0704:                                         Col[i, j, 1] = green
                    __pyx_t_124 = __pyx_v_i;
                    __pyx_t_125 = __pyx_v_j;
                    __pyx_t_126 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0705:                                         Col[i, j, 0] = blue
                    __pyx_t_127 = __pyx_v_i;
                    __pyx_t_128 = __pyx_v_j;
                    __pyx_t_129 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0706:                                         a[k] = 1
                    __pyx_t_130 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0707: 
+0708:                             i, j = xo - deli, yo - delj
              __pyx_t_131 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_132 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_131;
              __pyx_v_j = __pyx_t_132;
+0709:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L52_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L52_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+0710:                                 if I[i, j] == 0:
                __pyx_t_132 = __pyx_v_i;
                __pyx_t_131 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_131, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+0711:                                     if i < m - 1:
                  __pyx_t_22 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L55;
                  }
+0712:                                         PS = I[i + 1, j]
                    __pyx_t_133 = (__pyx_v_i + 1);
                    __pyx_t_134 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides));
 0713:                                     else:
+0714:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L55:;
+0715:                                     if j < n - 1:
                  __pyx_t_22 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L56;
                  }
+0716:                                         PE = I[i, j + 1]
                    __pyx_t_135 = __pyx_v_i;
                    __pyx_t_136 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides));
 0717:                                     else:
+0718:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L56:;
+0719:                                     if PE == Io or PS == Io:
                  __pyx_t_24 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L58_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L58_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+0720:                                         I[i, j] = Io
                    __pyx_t_137 = __pyx_v_i;
                    __pyx_t_138 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0721:                                         Col[i, j, 2] = red
                    __pyx_t_139 = __pyx_v_i;
                    __pyx_t_140 = __pyx_v_j;
                    __pyx_t_141 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0722:                                         Col[i, j, 1] = green
                    __pyx_t_142 = __pyx_v_i;
                    __pyx_t_143 = __pyx_v_j;
                    __pyx_t_144 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0723:                                         Col[i, j, 0] = blue
                    __pyx_t_145 = __pyx_v_i;
                    __pyx_t_146 = __pyx_v_j;
                    __pyx_t_147 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0724:                                         a[k] = 1
                    __pyx_t_148 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0725: 
+0726:                             i, j = xo + deli, yo - delj
              __pyx_t_149 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_150 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_149;
              __pyx_v_j = __pyx_t_150;
+0727:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L61_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L61_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+0728:                                 if I[i, j] == 0:
                __pyx_t_150 = __pyx_v_i;
                __pyx_t_149 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_149, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+0729:                                     if i > 0:
                  __pyx_t_22 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L64;
                  }
+0730:                                         PN = I[i - 1, j]
                    __pyx_t_151 = (__pyx_v_i - 1);
                    __pyx_t_152 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides));
 0731:                                     else:
+0732:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L64:;
+0733:                                     if j < n - 1:
                  __pyx_t_22 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L65;
                  }
+0734:                                         PE = I[i, j + 1]
                    __pyx_t_153 = __pyx_v_i;
                    __pyx_t_154 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides));
 0735:                                     else:
+0736:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L65:;
+0737:                                     if PN == Io or PE == Io:
                  __pyx_t_24 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L67_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L67_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+0738:                                         I[i, j] = Io
                    __pyx_t_155 = __pyx_v_i;
                    __pyx_t_156 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0739:                                         Col[i, j, 2] = red
                    __pyx_t_157 = __pyx_v_i;
                    __pyx_t_158 = __pyx_v_j;
                    __pyx_t_159 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0740:                                         Col[i, j, 1] = green
                    __pyx_t_160 = __pyx_v_i;
                    __pyx_t_161 = __pyx_v_j;
                    __pyx_t_162 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0741:                                         Col[i, j, 0] = blue
                    __pyx_t_163 = __pyx_v_i;
                    __pyx_t_164 = __pyx_v_j;
                    __pyx_t_165 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0742:                                         a[k] = 1
                    __pyx_t_166 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_166, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0743: 
+0744:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+0745:         for i in range(p):
    __pyx_t_75 = __pyx_v_p;
    for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_75; __pyx_t_76+=1) {
      __pyx_v_i = __pyx_t_76;
+0746:             r[i] = r[i] + 1
      __pyx_t_90 = __pyx_v_i;
      __pyx_t_91 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_r.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_r.diminfo[0].strides)) + 1);
    }
+0747:         nnz = cv2.countNonZero(I)
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 747, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 747, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_23);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_23, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 747, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 747, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 747, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    __pyx_t_75 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_75 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 747, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_nnz = __pyx_t_75;
  }
 0748: 
 0749: 
 0750: 
+0751:     obj.p = p
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_6) < 0) __PYX_ERR(0, 751, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0752:     toc = time.time()
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_23 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_23) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_23); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 752, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  } else {
    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 752, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 752, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_toc = __pyx_t_21;
+0753:     obj.exetime = toc - tic
  __pyx_t_6 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_6) < 0) __PYX_ERR(0, 753, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0754:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_delete); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_arange); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_48);
  __pyx_t_5 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_167 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_167)) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_167);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_167, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_167, 0+__pyx_t_25, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_48);
  PyTuple_SET_ITEM(__pyx_t_167, 1+__pyx_t_25, __pyx_t_48);
  __pyx_t_7 = 0;
  __pyx_t_48 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_167, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_167); __pyx_t_167 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_23);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_23, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_167 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_167)) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_167);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_167, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_167, 0+__pyx_t_25, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_167, 1+__pyx_t_25, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_167, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_167); __pyx_t_167 = 0;
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_6) < 0) __PYX_ERR(0, 754, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0755:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_167 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_delete); if (unlikely(!__pyx_t_167)) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_167);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_arange); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_48);
  __pyx_t_7 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_25, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_48);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_25, __pyx_t_48);
  __pyx_t_1 = 0;
  __pyx_t_48 = 0;
  __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_167))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_167);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_167);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_167, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_25, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_23);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_25, __pyx_t_23);
  __pyx_t_23 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_167, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_167); __pyx_t_167 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_6) < 0) __PYX_ERR(0, 755, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0756:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 756, __pyx_L1_error)
+0757:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 757, __pyx_L1_error)
+0758:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 0759: 
 0760: 
+0761: def Evolve_2D_Isotropic_Continuous_with_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_11Evolve_2D_Isotropic_Continuous_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_11Evolve_2D_Isotropic_Continuous_with_gr2D = {"Evolve_2D_Isotropic_Continuous_with_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_11Evolve_2D_Isotropic_Continuous_with_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_11Evolve_2D_Isotropic_Continuous_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Isotropic_Continuous_with_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_10Evolve_2D_Isotropic_Continuous_with_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_10Evolve_2D_Isotropic_Continuous_with_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_NdotIsoXY = NULL;
  PyObject *__pyx_v_GtIsoXY = NULL;
  PyObject *__pyx_v_gr2D = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_rmax;
  PY_LONG_LONG __pyx_v_win;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_gr2DValmax;
  float __pyx_v_dr;
  float __pyx_v_rad;
  float __pyx_v_tmp;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_r = 0;
  PyArrayObject *__pyx_v_gr2DVal = 0;
  CYTHON_UNUSED PyArrayObject *__pyx_v_rold = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_gr2DVal;
  __Pyx_Buffer __pyx_pybuffer_gr2DVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_r;
  __Pyx_Buffer __pyx_pybuffer_r;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_rold;
  __Pyx_Buffer __pyx_pybuffer_rold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Isotropic_Continuous_with_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_r.pybuffer.buf = NULL;
  __pyx_pybuffer_r.refcount = 0;
  __pyx_pybuffernd_r.data = NULL;
  __pyx_pybuffernd_r.rcbuffer = &__pyx_pybuffer_r;
  __pyx_pybuffer_gr2DVal.pybuffer.buf = NULL;
  __pyx_pybuffer_gr2DVal.refcount = 0;
  __pyx_pybuffernd_gr2DVal.data = NULL;
  __pyx_pybuffernd_gr2DVal.rcbuffer = &__pyx_pybuffer_gr2DVal;
  __pyx_pybuffer_rold.pybuffer.buf = NULL;
  __pyx_pybuffer_rold.refcount = 0;
  __pyx_pybuffernd_rold.data = NULL;
  __pyx_pybuffernd_rold.rcbuffer = &__pyx_pybuffer_rold;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_34);
  __Pyx_XDECREF(__pyx_t_192);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Isotropic_Continuous_with_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_NdotIsoXY);
  __Pyx_XDECREF(__pyx_v_GtIsoXY);
  __Pyx_XDECREF(__pyx_v_gr2D);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XDECREF((PyObject *)__pyx_v_gr2DVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_rold);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__21 = PyTuple_Pack(64, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_NdotIsoXY, __pyx_n_s_GtIsoXY, __pyx_n_s_gr2D, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_countim, __pyx_n_s_rmax, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_w, __pyx_n_s_Iter, __pyx_n_s_gr2DValmax, __pyx_n_s_dr, __pyx_n_s_rad, __pyx_n_s_tmp, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_r, __pyx_n_s_gr2DVal, __pyx_n_s_rold, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_11Evolve_2D_Isotropic_Continuous_with_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Isotropic_Continuous_w_2, __pyx_t_2) < 0) __PYX_ERR(0, 761, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 64, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Isotropic_Continuous_w_2, 761, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 761, __pyx_L1_error)
 0762: 
 0763:     # Grabbing data from the input object
+0764:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 764, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+0765:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 765, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+0766:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 766, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+0767:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 767, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 767, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+0768:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 768, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+0769:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+0770:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 770, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+0771:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 771, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+0772:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+0773:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+0774:     NdotIsoXY = obj.NdotIsoXY
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_NdotIsoXY); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_NdotIsoXY = __pyx_t_1;
  __pyx_t_1 = 0;
+0775:     GtIsoXY = obj.GtIsoXY
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_GtIsoXY); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_GtIsoXY = __pyx_t_1;
  __pyx_t_1 = 0;
+0776:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
+0777:     gr2D = obj.gr2D
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_gr2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_gr2D = __pyx_t_1;
  __pyx_t_1 = 0;
 0778: 
 0779:     # Declaring other variables
 0780:     cdef double tic, toc
 0781:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, xt, yt, dp, nnz, countim, rmax, win, xmin, xmax, ymin, ymax, i, j, k, xo, yo, w, Iter
 0782:     cdef float gr2DValmax, dr, rad, tmp, dt, f, t, red, green, blue
+0783:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 783, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 783, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+0784:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.zeros(MN, dtype=np.int8)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 784, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 784, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 784, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+0785:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 785, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 785, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+0786:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 786, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 786, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+0787:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 787, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 787, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 787, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+0788:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 788, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 788, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+0789:     cdef np.ndarray[np.float64_t, ndim = 1] r = np.zeros(MN, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 789, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 789, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_r.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 789, __pyx_L1_error)
    } else {__pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_r = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+0790:     cdef np.ndarray[np.float64_t, ndim = 1] gr2DVal = np.zeros(MN, dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 790, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_gr2DVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 790, __pyx_L1_error)
    } else {__pyx_pybuffernd_gr2DVal.diminfo[0].strides = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_gr2DVal.diminfo[0].shape = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_gr2DVal = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+0791:     cdef np.ndarray[np.float64_t, ndim = 1] rold = np.zeros(MN, dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 791, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_rold.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_rold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_rold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 791, __pyx_L1_error)
    } else {__pyx_pybuffernd_rold.diminfo[0].strides = __pyx_pybuffernd_rold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_rold.diminfo[0].shape = __pyx_pybuffernd_rold.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_rold = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+0792:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 792, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 792, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+0793:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 793, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 793, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 793, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_19 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+0794:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 794, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 794, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 794, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0795:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 795, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 795, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 795, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 795, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 795, __pyx_L1_error)
  }
  __pyx_t_19 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_8));
  __pyx_t_8 = 0;
+0796:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 796, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 796, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 796, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_tic = __pyx_t_23;
+0797:     t = 0
  __pyx_v_t = 0.0;
+0798:     p = 0
  __pyx_v_p = 0;
+0799:     dp = 0
  __pyx_v_dp = 0;
+0800:     countim = 0
  __pyx_v_countim = 0;
+0801:     nnz = cv2.countNonZero(I)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_INCREF(((PyObject *)__pyx_v_I));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_I));
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_8); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 801, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_nnz = __pyx_t_2;
 0802: 
+0803:     Iter = 1
  __pyx_v_Iter = 1;
+0804:     while nnz < MN:
  while (1) {
    __pyx_t_24 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_24) break;
+0805:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+0806:         dt = 1.0 / GtIsoXY(t)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_v_GtIsoXY);
    __pyx_t_1 = __pyx_v_GtIsoXY; __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 806, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 806, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 806, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_8, 1.0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 806, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_dt = __pyx_t_3;
+0807:         dp = int((1 - f) * NdotIsoXY(t) * dt)
    __pyx_t_1 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_NdotIsoXY);
    __pyx_t_6 = __pyx_v_NdotIsoXY; __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 807, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 807, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_25, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 807, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = PyNumber_Multiply(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_8); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 807, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_v_dp = __pyx_t_2;
+0808:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+0809:         if pdelNxy == []:
    __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 809, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 809, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_24 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_24 < 0)) __PYX_ERR(0, 809, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_24) {
/* … */
      goto __pyx_L5;
    }
+0810:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
      __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_24 = __pyx_t_26;
      __pyx_L7_bool_binop_done:;
      if (__pyx_t_24) {
/* … */
      }
+0811:                 count = 0
        __pyx_v_count = 0;
+0812:                 while count < dp:
        while (1) {
          __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_24) break;
+0813:                     xt = np.random.randint(0, m - 1)
          __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 813, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 813, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_randint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 813, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 813, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_25 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_25)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_25);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_7 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 813, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (__pyx_t_25) {
            __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_25); __pyx_t_25 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_27, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 813, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 813, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_v_xt = __pyx_t_2;
+0814:                     yt = np.random.randint(0, n - 1)
          __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 814, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 814, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_randint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 814, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 814, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_6 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 814, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          if (__pyx_t_6) {
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_6); __pyx_t_6 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_7);
          __pyx_t_7 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 814, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_v_yt = __pyx_t_2;
+0815:                     if I[xt, yt] == 0:
          __pyx_t_2 = __pyx_v_xt;
          __pyx_t_28 = __pyx_v_yt;
          __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_24) {
/* … */
          }
        }
+0816:                         I[xt, yt] = p + count + 1
            __pyx_t_29 = __pyx_v_xt;
            __pyx_t_30 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+0817:                         X[p + count] = xt
            __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+0818:                         Y[p + count] = yt
            __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+0819:                         a[p + count] = 1
            __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+0820:                         gr2DVal[p + count] = gr2D(xt, yt, p + count + 1)
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 820, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 820, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 820, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_v_gr2D);
            __pyx_t_6 = __pyx_v_gr2D; __pyx_t_5 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_6, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_34 = PyTuple_New(3+__pyx_t_27); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 820, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_34, 0+__pyx_t_27, __pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_34, 1+__pyx_t_27, __pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_34, 2+__pyx_t_27, __pyx_t_7);
            __pyx_t_8 = 0;
            __pyx_t_25 = 0;
            __pyx_t_7 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 820, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 820, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_36 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_gr2DVal.diminfo[0].strides) = __pyx_t_35;
+0821:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_37 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_38 = 0;
            __pyx_t_39 = __pyx_v_xt;
            __pyx_t_40 = __pyx_v_yt;
            __pyx_t_41 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_col.diminfo[1].strides));
+0822:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_42 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_43 = 1;
            __pyx_t_44 = __pyx_v_xt;
            __pyx_t_45 = __pyx_v_yt;
            __pyx_t_46 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_col.diminfo[1].strides));
+0823:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_47 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_48 = 2;
            __pyx_t_49 = __pyx_v_xt;
            __pyx_t_50 = __pyx_v_yt;
            __pyx_t_51 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_col.diminfo[1].strides));
+0824:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+0825:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 0826:         else:
+0827:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
    /*else*/ {
      __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_24 = __pyx_t_26;
      __pyx_L14_bool_binop_done:;
      if (__pyx_t_24) {
/* … */
      }
    }
    __pyx_L5:;
+0828:                 xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_34);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_8 = NULL;
        __pyx_t_27 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_34);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_34, function);
            __pyx_t_27 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_INCREF(__pyx_v_pdelNxy);
        __Pyx_GIVEREF(__pyx_v_pdelNxy);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_v_pdelNxy);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_27, __pyx_t_6);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_27, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_27, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_27, __pyx_t_25);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_27, __pyx_int_1);
        __pyx_t_6 = 0;
        __pyx_t_7 = 0;
        __pyx_t_25 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 828, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
          PyObject* sequence = __pyx_t_1;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 828, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_34 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_34 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_34);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_34 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 828, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_34);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 828, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_25 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 828, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_52 = Py_TYPE(__pyx_t_25)->tp_iternext;
          index = 0; __pyx_t_34 = __pyx_t_52(__pyx_t_25); if (unlikely(!__pyx_t_34)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_34);
          index = 1; __pyx_t_5 = __pyx_t_52(__pyx_t_25); if (unlikely(!__pyx_t_5)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_52(__pyx_t_25), 2) < 0) __PYX_ERR(0, 828, __pyx_L1_error)
          __pyx_t_52 = NULL;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          goto __pyx_L18_unpacking_done;
          __pyx_L17_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_52 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 828, __pyx_L1_error)
          __pyx_L18_unpacking_done:;
        }
        if (!(likely(((__pyx_t_34) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_34, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 828, __pyx_L1_error)
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 828, __pyx_L1_error)
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_34);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
            }
          }
          __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 828, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_34));
        __pyx_t_34 = 0;
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
          }
          __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 828, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+0829:                 w = 0
        __pyx_v_w = 0;
+0830:                 count = 0
        __pyx_v_count = 0;
+0831:                 while count < dp:
        while (1) {
          __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_24) break;
+0832:                     xt = xtrial[w]
          __pyx_t_53 = __pyx_v_w;
          __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+0833:                     yt = ytrial[w]
          __pyx_t_54 = __pyx_v_w;
          __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+0834:                     if I[xt, yt] == 0:
          __pyx_t_55 = __pyx_v_xt;
          __pyx_t_56 = __pyx_v_yt;
          __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_56, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_24) {
/* … */
          }
+0835:                         I[xt, yt] = p + count + 1
            __pyx_t_57 = __pyx_v_xt;
            __pyx_t_58 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_58, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+0836:                         X[p + count] = xt
            __pyx_t_59 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+0837:                         Y[p + count] = yt
            __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+0838:                         a[p + count] = 1
            __pyx_t_61 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+0839:                         gr2DVal[p + count] = gr2D(xt, yt, p + count + 1)
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 839, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 839, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 839, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_INCREF(__pyx_v_gr2D);
            __pyx_t_7 = __pyx_v_gr2D; __pyx_t_6 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
              __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
              if (likely(__pyx_t_6)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_6);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_7, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_8 = PyTuple_New(3+__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 839, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            if (__pyx_t_6) {
              __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
            }
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_27, __pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_34);
            PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_27, __pyx_t_34);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_27, __pyx_t_25);
            __pyx_t_5 = 0;
            __pyx_t_34 = 0;
            __pyx_t_25 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 839, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 839, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_62 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_gr2DVal.diminfo[0].strides) = __pyx_t_35;
+0840:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_63 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_64 = 0;
            __pyx_t_65 = __pyx_v_xt;
            __pyx_t_66 = __pyx_v_yt;
            __pyx_t_67 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_67, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_64, __pyx_pybuffernd_col.diminfo[1].strides));
+0841:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_68 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_69 = 1;
            __pyx_t_70 = __pyx_v_xt;
            __pyx_t_71 = __pyx_v_yt;
            __pyx_t_72 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_69, __pyx_pybuffernd_col.diminfo[1].strides));
+0842:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_73 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_74 = 2;
            __pyx_t_75 = __pyx_v_xt;
            __pyx_t_76 = __pyx_v_yt;
            __pyx_t_77 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_col.diminfo[1].strides));
+0843:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+0844:                     if w < dp - 1:
          __pyx_t_24 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
          if (__pyx_t_24) {
/* … */
            goto __pyx_L22;
          }
+0845:                         w = w + 1
            __pyx_v_w = (__pyx_v_w + 1);
 0846:                     else:
+0847:                         xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          /*else*/ {
            __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 847, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 847, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 847, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 847, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 847, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            __pyx_t_5 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_8, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_6 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 847, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_INCREF(__pyx_v_pdelNxy);
            __Pyx_GIVEREF(__pyx_v_pdelNxy);
            PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_27, __pyx_v_pdelNxy);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_27, __pyx_t_7);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_27, __pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_34);
            PyTuple_SET_ITEM(__pyx_t_6, 5+__pyx_t_27, __pyx_t_34);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_6, 6+__pyx_t_27, __pyx_int_1);
            __pyx_t_7 = 0;
            __pyx_t_25 = 0;
            __pyx_t_34 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 847, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
              PyObject* sequence = __pyx_t_1;
              #if CYTHON_COMPILING_IN_CPYTHON
              Py_ssize_t size = Py_SIZE(sequence);
              #else
              Py_ssize_t size = PySequence_Size(sequence);
              #endif
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(0, 847, __pyx_L1_error)
              }
              #if CYTHON_COMPILING_IN_CPYTHON
              if (likely(PyTuple_CheckExact(sequence))) {
                __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); 
                __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
              } else {
                __pyx_t_8 = PyList_GET_ITEM(sequence, 0); 
                __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
              }
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_6);
              #else
              __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 847, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 847, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              #endif
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            } else {
              Py_ssize_t index = -1;
              __pyx_t_34 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 847, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_34);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_52 = Py_TYPE(__pyx_t_34)->tp_iternext;
              index = 0; __pyx_t_8 = __pyx_t_52(__pyx_t_34); if (unlikely(!__pyx_t_8)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_8);
              index = 1; __pyx_t_6 = __pyx_t_52(__pyx_t_34); if (unlikely(!__pyx_t_6)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_6);
              if (__Pyx_IternextUnpackEndCheck(__pyx_t_52(__pyx_t_34), 2) < 0) __PYX_ERR(0, 847, __pyx_L1_error)
              __pyx_t_52 = NULL;
              __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
              goto __pyx_L24_unpacking_done;
              __pyx_L23_unpacking_failed:;
              __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
              __pyx_t_52 = NULL;
              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
              __PYX_ERR(0, 847, __pyx_L1_error)
              __pyx_L24_unpacking_done:;
            }
            if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 847, __pyx_L1_error)
            if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 847, __pyx_L1_error)
            __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
                }
              }
              __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 847, __pyx_L1_error)
            }
            __pyx_t_13 = 0;
            __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_8));
            __pyx_t_8 = 0;
            __pyx_t_14 = ((PyArrayObject *)__pyx_t_6);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                }
              }
              __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 847, __pyx_L1_error)
            }
            __pyx_t_14 = 0;
            __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_6));
            __pyx_t_6 = 0;
+0848:                         w = 0
            __pyx_v_w = 0;
          }
          __pyx_L22:;
        }
+0849:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 0850: 
+0851:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+0852:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 0853: 
+0854:         gr2DValmax = 0
    __pyx_v_gr2DValmax = 0.0;
+0855:         for i in range(0, p):
    __pyx_t_78 = __pyx_v_p;
    for (__pyx_t_79 = 0; __pyx_t_79 < __pyx_t_78; __pyx_t_79+=1) {
      __pyx_v_i = __pyx_t_79;
+0856:             if a[i] == 1:
      __pyx_t_80 = __pyx_v_i;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+0857:                 tmp = gr2DVal[i]
        __pyx_t_81 = __pyx_v_i;
        __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_gr2DVal.diminfo[0].strides));
+0858:                 if tmp > gr2DValmax:
        __pyx_t_24 = ((__pyx_v_tmp > __pyx_v_gr2DValmax) != 0);
        if (__pyx_t_24) {
/* … */
        }
+0859:                     gr2DValmax = tmp
          __pyx_v_gr2DValmax = __pyx_v_tmp;
 0860: 
+0861:         for k in range(0, p):
    __pyx_t_78 = __pyx_v_p;
    for (__pyx_t_79 = 0; __pyx_t_79 < __pyx_t_78; __pyx_t_79+=1) {
      __pyx_v_k = __pyx_t_79;
+0862:             if a[k] == 1:
      __pyx_t_82 = __pyx_v_k;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+0863:                 xo = X[k]
        __pyx_t_83 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_X.diminfo[0].strides));
+0864:                 yo = Y[k]
        __pyx_t_84 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_Y.diminfo[0].strides));
+0865:                 Io = I[xo, yo]
        __pyx_t_85 = __pyx_v_xo;
        __pyx_t_86 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides));
+0866:                 dr = gr2DVal[k] / gr2DValmax
        __pyx_t_87 = __pyx_v_k;
        __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_gr2DVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_gr2DValmax));
+0867:                 r[k] = r[k] + dr
        __pyx_t_88 = __pyx_v_k;
        __pyx_t_89 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_r.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_r.diminfo[0].strides)) + __pyx_v_dr);
+0868:                 rad = r[k]
        __pyx_t_90 = __pyx_v_k;
        __pyx_v_rad = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_r.diminfo[0].strides));
+0869:                 a[k] = 0
        __pyx_t_91 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+0870:                 rmax = math.ceil(rad)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 870, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 870, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyFloat_FromDouble(__pyx_v_rad); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 870, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_34 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_8);
          if (likely(__pyx_t_34)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
            __Pyx_INCREF(__pyx_t_34);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_8, function);
          }
        }
        if (!__pyx_t_34) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 870, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 870, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_34); __pyx_t_34 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 870, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        }
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_92 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_92 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 870, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_rmax = __pyx_t_92;
+0871:                 red = col[k, 0]
        __pyx_t_92 = __pyx_v_k;
        __pyx_t_93 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_col.diminfo[1].strides));
+0872:                 green = col[k, 1]
        __pyx_t_94 = __pyx_v_k;
        __pyx_t_95 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_95, __pyx_pybuffernd_col.diminfo[1].strides));
+0873:                 blue = col[k, 2]
        __pyx_t_96 = __pyx_v_k;
        __pyx_t_97 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_97, __pyx_pybuffernd_col.diminfo[1].strides));
+0874:                 for deli in range(0, rmax + 1):
        __pyx_t_98 = (__pyx_v_rmax + 1);
        for (__pyx_t_99 = 0; __pyx_t_99 < __pyx_t_98; __pyx_t_99+=1) {
          __pyx_v_deli = __pyx_t_99;
+0875:                     for delj in range (0, rmax + 1):
          __pyx_t_100 = (__pyx_v_rmax + 1);
          for (__pyx_t_101 = 0; __pyx_t_101 < __pyx_t_100; __pyx_t_101+=1) {
            __pyx_v_delj = __pyx_t_101;
+0876:                         if deli ** 2 + delj ** 2 <= (rad + 0.5) ** 2:
            __pyx_t_24 = (((__Pyx_pow_PY_LONG_LONG(__pyx_v_deli, 2) + __Pyx_pow_PY_LONG_LONG(__pyx_v_delj, 2)) <= pow((__pyx_v_rad + 0.5), 2.0)) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
        }
+0877:                             i, j = xo + deli, yo + delj
              __pyx_t_102 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_103 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_102;
              __pyx_v_j = __pyx_t_103;
+0878:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L38_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L38_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+0879:                                 if I[i, j] == 0:
                __pyx_t_103 = __pyx_v_i;
                __pyx_t_102 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+0880:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L41;
                  }
+0881:                                         PN = I[i - 1, j]
                    __pyx_t_105 = (__pyx_v_i - 1);
                    __pyx_t_106 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_I.diminfo[1].strides));
 0882:                                     else:
+0883:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L41:;
+0884:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L42;
                  }
+0885:                                         PE = I[i, j + 1]
                    __pyx_t_107 = __pyx_v_i;
                    __pyx_t_108 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_I.diminfo[1].strides));
 0886:                                     else:
+0887:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L42:;
+0888:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L43;
                  }
+0889:                                         PW = I[i, j - 1]
                    __pyx_t_109 = __pyx_v_i;
                    __pyx_t_110 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_I.diminfo[1].strides));
 0890:                                     else:
+0891:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L43:;
+0892:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L44;
                  }
+0893:                                         PS = I[i + 1, j]
                    __pyx_t_111 = (__pyx_v_i + 1);
                    __pyx_t_112 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_I.diminfo[1].strides));
 0894:                                     else:
+0895:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L44:;
 0896: 
+0897:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L46_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L46_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L46_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L46_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+0898:                                         I[i, j] = Io
                    __pyx_t_113 = __pyx_v_i;
                    __pyx_t_114 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0899:                                         Col[i, j, 2] = red
                    __pyx_t_115 = __pyx_v_i;
                    __pyx_t_116 = __pyx_v_j;
                    __pyx_t_117 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0900:                                         Col[i, j, 1] = green
                    __pyx_t_118 = __pyx_v_i;
                    __pyx_t_119 = __pyx_v_j;
                    __pyx_t_120 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_119, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_120, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0901:                                         Col[i, j, 0] = blue
                    __pyx_t_121 = __pyx_v_i;
                    __pyx_t_122 = __pyx_v_j;
                    __pyx_t_123 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0902:                                         a[k] = 1
                    __pyx_t_124 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0903: 
+0904:                             i, j = xo - deli, yo + delj
              __pyx_t_125 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_126 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_125;
              __pyx_v_j = __pyx_t_126;
+0905:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L51_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L51_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+0906:                                 if I[i, j] == 0:
                __pyx_t_126 = __pyx_v_i;
                __pyx_t_125 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+0907:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L54;
                  }
+0908:                                         PN = I[i - 1, j]
                    __pyx_t_127 = (__pyx_v_i - 1);
                    __pyx_t_128 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_I.diminfo[1].strides));
 0909:                                     else:
+0910:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L54:;
+0911:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L55;
                  }
+0912:                                         PE = I[i, j + 1]
                    __pyx_t_129 = __pyx_v_i;
                    __pyx_t_130 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_I.diminfo[1].strides));
 0913:                                     else:
+0914:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L55:;
+0915:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L56;
                  }
+0916:                                         PW = I[i, j - 1]
                    __pyx_t_131 = __pyx_v_i;
                    __pyx_t_132 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_I.diminfo[1].strides));
 0917:                                     else:
+0918:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L56:;
+0919:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L57;
                  }
+0920:                                         PS = I[i + 1, j]
                    __pyx_t_133 = (__pyx_v_i + 1);
                    __pyx_t_134 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides));
 0921:                                     else:
+0922:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L57:;
 0923: 
+0924:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L59_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L59_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L59_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L59_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+0925:                                         I[i, j] = Io
                    __pyx_t_135 = __pyx_v_i;
                    __pyx_t_136 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0926:                                         Col[i, j, 2] = red
                    __pyx_t_137 = __pyx_v_i;
                    __pyx_t_138 = __pyx_v_j;
                    __pyx_t_139 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0927:                                         Col[i, j, 1] = green
                    __pyx_t_140 = __pyx_v_i;
                    __pyx_t_141 = __pyx_v_j;
                    __pyx_t_142 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0928:                                         Col[i, j, 0] = blue
                    __pyx_t_143 = __pyx_v_i;
                    __pyx_t_144 = __pyx_v_j;
                    __pyx_t_145 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0929:                                         a[k] = 1
                    __pyx_t_146 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0930: 
+0931:                             i, j = xo - deli, yo - delj
              __pyx_t_147 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_148 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_147;
              __pyx_v_j = __pyx_t_148;
+0932:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L64_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L64_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+0933:                                 if I[i, j] == 0:
                __pyx_t_148 = __pyx_v_i;
                __pyx_t_147 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_147, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+0934:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L67;
                  }
+0935:                                         PN = I[i - 1, j]
                    __pyx_t_149 = (__pyx_v_i - 1);
                    __pyx_t_150 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_150, __pyx_pybuffernd_I.diminfo[1].strides));
 0936:                                     else:
+0937:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L67:;
+0938:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L68;
                  }
+0939:                                         PE = I[i, j + 1]
                    __pyx_t_151 = __pyx_v_i;
                    __pyx_t_152 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides));
 0940:                                     else:
+0941:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L68:;
+0942:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L69;
                  }
+0943:                                         PW = I[i, j - 1]
                    __pyx_t_153 = __pyx_v_i;
                    __pyx_t_154 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides));
 0944:                                     else:
+0945:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L69:;
+0946:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L70;
                  }
+0947:                                         PS = I[i + 1, j]
                    __pyx_t_155 = (__pyx_v_i + 1);
                    __pyx_t_156 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides));
 0948:                                     else:
+0949:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L70:;
 0950: 
+0951:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L72_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L72_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L72_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L72_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+0952:                                         I[i, j] = Io
                    __pyx_t_157 = __pyx_v_i;
                    __pyx_t_158 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0953:                                         Col[i, j, 2] = red
                    __pyx_t_159 = __pyx_v_i;
                    __pyx_t_160 = __pyx_v_j;
                    __pyx_t_161 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0954:                                         Col[i, j, 1] = green
                    __pyx_t_162 = __pyx_v_i;
                    __pyx_t_163 = __pyx_v_j;
                    __pyx_t_164 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0955:                                         Col[i, j, 0] = blue
                    __pyx_t_165 = __pyx_v_i;
                    __pyx_t_166 = __pyx_v_j;
                    __pyx_t_167 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0956:                                         a[k] = 1
                    __pyx_t_168 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 0957: 
+0958:                             i, j = xo + deli, yo - delj
              __pyx_t_169 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_170 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_169;
              __pyx_v_j = __pyx_t_170;
+0959:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L77_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L77_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+0960:                                 if I[i, j] == 0:
                __pyx_t_170 = __pyx_v_i;
                __pyx_t_169 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+0961:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L80;
                  }
+0962:                                         PN = I[i - 1, j]
                    __pyx_t_171 = (__pyx_v_i - 1);
                    __pyx_t_172 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_172, __pyx_pybuffernd_I.diminfo[1].strides));
 0963:                                     else:
+0964:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L80:;
+0965:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L81;
                  }
+0966:                                         PE = I[i, j + 1]
                    __pyx_t_173 = __pyx_v_i;
                    __pyx_t_174 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_173, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_174, __pyx_pybuffernd_I.diminfo[1].strides));
 0967:                                     else:
+0968:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L81:;
+0969:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L82;
                  }
+0970:                                         PW = I[i, j - 1]
                    __pyx_t_175 = __pyx_v_i;
                    __pyx_t_176 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_176, __pyx_pybuffernd_I.diminfo[1].strides));
 0971:                                     else:
+0972:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L82:;
+0973:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L83;
                  }
+0974:                                         PS = I[i + 1, j]
                    __pyx_t_177 = (__pyx_v_i + 1);
                    __pyx_t_178 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_178, __pyx_pybuffernd_I.diminfo[1].strides));
 0975:                                     else:
+0976:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L83:;
 0977: 
+0978:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L85_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L85_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L85_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L85_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+0979:                                         I[i, j] = Io
                    __pyx_t_179 = __pyx_v_i;
                    __pyx_t_180 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_180, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+0980:                                         Col[i, j, 2] = red
                    __pyx_t_181 = __pyx_v_i;
                    __pyx_t_182 = __pyx_v_j;
                    __pyx_t_183 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_181, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_182, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_183, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+0981:                                         Col[i, j, 1] = green
                    __pyx_t_184 = __pyx_v_i;
                    __pyx_t_185 = __pyx_v_j;
                    __pyx_t_186 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+0982:                                         Col[i, j, 0] = blue
                    __pyx_t_187 = __pyx_v_i;
                    __pyx_t_188 = __pyx_v_j;
                    __pyx_t_189 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+0983:                                         a[k] = 1
                    __pyx_t_190 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_190, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+0984:                 if a[k] == 0:
        __pyx_t_98 = __pyx_v_k;
        __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
        if (__pyx_t_24) {
/* … */
        }
+0985:                     win = rmax
          __pyx_v_win = __pyx_v_rmax;
+0986:                     xmin = max(0, xo - win)
          __pyx_t_99 = (__pyx_v_xo - __pyx_v_win);
          __pyx_t_191 = 0;
          if (((__pyx_t_99 > __pyx_t_191) != 0)) {
            __pyx_t_100 = __pyx_t_99;
          } else {
            __pyx_t_100 = __pyx_t_191;
          }
          __pyx_v_xmin = __pyx_t_100;
+0987:                     xmax = min(m - 1, xo + win)
          __pyx_t_100 = (__pyx_v_xo + __pyx_v_win);
          __pyx_t_99 = (__pyx_v_m - 1);
          if (((__pyx_t_100 < __pyx_t_99) != 0)) {
            __pyx_t_101 = __pyx_t_100;
          } else {
            __pyx_t_101 = __pyx_t_99;
          }
          __pyx_v_xmax = __pyx_t_101;
+0988:                     ymin = max(0, yo - win)
          __pyx_t_101 = (__pyx_v_yo - __pyx_v_win);
          __pyx_t_191 = 0;
          if (((__pyx_t_101 > __pyx_t_191) != 0)) {
            __pyx_t_100 = __pyx_t_101;
          } else {
            __pyx_t_100 = __pyx_t_191;
          }
          __pyx_v_ymin = __pyx_t_100;
+0989:                     ymax = min(n - 1, yo + win)
          __pyx_t_100 = (__pyx_v_yo + __pyx_v_win);
          __pyx_t_101 = (__pyx_v_n - 1);
          if (((__pyx_t_100 < __pyx_t_101) != 0)) {
            __pyx_t_99 = __pyx_t_100;
          } else {
            __pyx_t_99 = __pyx_t_101;
          }
          __pyx_v_ymax = __pyx_t_99;
+0990:                     a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
          __pyx_t_99 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 0991: 
+0992:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+0993:         nnz = cv2.countNonZero(I)
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 993, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 993, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_25);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_25, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_25, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 993, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __pyx_t_78 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_78 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 993, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_nnz = __pyx_t_78;
  }
 0994: 
 0995: 
 0996: 
+0997:     obj.p = p
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_1) < 0) __PYX_ERR(0, 997, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0998:     toc = time.time()
  __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_25 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_25)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_25) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 998, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 998, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_toc = __pyx_t_23;
+0999:     obj.exetime = toc - tic
  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_1) < 0) __PYX_ERR(0, 999, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1000:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_delete); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_arange); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_34);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_34, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_192 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_192)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_192);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_192, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_192, 0+__pyx_t_27, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_192, 1+__pyx_t_27, __pyx_t_7);
  __pyx_t_8 = 0;
  __pyx_t_7 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_192, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_192); __pyx_t_192 = 0;
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_34 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
    __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_25);
    if (likely(__pyx_t_34)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_34);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_25, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_192 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_192)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_192);
  if (__pyx_t_34) {
    __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_192, 0, __pyx_t_34); __pyx_t_34 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_192, 0+__pyx_t_27, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_192, 1+__pyx_t_27, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_192, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_192); __pyx_t_192 = 0;
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_1) < 0) __PYX_ERR(0, 1000, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1001:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __pyx_t_192 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_delete); if (unlikely(!__pyx_t_192)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_192);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_arange); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_34);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_34, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_7);
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
  __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_5, NULL); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_34 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_192))) {
    __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_192);
    if (likely(__pyx_t_34)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_192);
      __Pyx_INCREF(__pyx_t_34);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_192, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_34) {
    __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_34); __pyx_t_34 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_25);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_25);
  __pyx_t_25 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_192, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_192); __pyx_t_192 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_1) < 0) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1002:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 1002, __pyx_L1_error)
+1003:     obj.gr2DVal = gr2DVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_gr2DVal, ((PyObject *)__pyx_v_gr2DVal)) < 0) __PYX_ERR(0, 1003, __pyx_L1_error)
+1004:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 1004, __pyx_L1_error)
 1005: 
+1006:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 1007: 
 1008: 
+1009: def Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_13Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_13Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D = {"Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_13Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_13Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_12Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_12Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_r;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_23);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__23 = PyTuple_Pack(38, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_k, __pyx_n_s_r, __pyx_n_s_Io, __pyx_n_s_Iter, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 1009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__23);
  __Pyx_GIVEREF(__pyx_tuple__23);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_13Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_without_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura, __pyx_t_2) < 0) __PYX_ERR(0, 1009, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 38, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura, 1009, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 1009, __pyx_L1_error)
 1010:     # Grabbing data from the input object
+1011:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1011, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+1012:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1012, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+1013:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1013, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1013, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+1014:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1014, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+1015:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1015, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+1016:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1016, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+1017:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1017, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_3;
+1018:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1018, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_3;
+1019:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1019, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_3;
+1020:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+1021:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
 1022: 
 1023:     # Declaring other variables
 1024:     cdef double tic, toc
 1025:     cdef long long i, j, deli, delj, xo, yo, PN, PE, PW, PS , k, r, Io, Iter
 1026:     cdef float red, green, blue
+1027:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1027, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1027, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1028:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1028, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1028, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+1029:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1029, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1029, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1029, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1030:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1030, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1030, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+1031:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1031, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1031, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1031, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1032:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1032, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1032, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+1033:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1033, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1033, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1034:     plantseed(myseed)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1034, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1035:     col = np.random.random((p, 3))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1035, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1035, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1035, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1035, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1035, __pyx_L1_error)
  }
  __pyx_t_14 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_4));
  __pyx_t_4 = 0;
+1036:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1036, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1036, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1036, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_tic = __pyx_t_18;
 1037: 
+1038:     if pdelNxy == []:
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1038, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 1038, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_19) {
/* … */
    goto __pyx_L3;
  }
+1039:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_7 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1039, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1039, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1039, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1039, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1039, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_20 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_20(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_5 = __pyx_t_20(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1039, __pyx_L1_error)
      __pyx_t_20 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_20 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1039, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1039, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1039, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1039, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1039, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 1040:     else:
+1041:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_21 = NULL;
    __pyx_t_22 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_21)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_21);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_22 = 1;
      }
    }
    __pyx_t_23 = PyTuple_New(7+__pyx_t_22); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    if (__pyx_t_21) {
      __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_21); __pyx_t_21 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_22, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_22, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_23, 2+__pyx_t_22, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_23, 3+__pyx_t_22, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_23, 4+__pyx_t_22, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_23, 5+__pyx_t_22, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_23, 6+__pyx_t_22, __pyx_int_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_23, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1041, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_23 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_23 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_23);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1041, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_23 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1041, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1041, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_20 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_20(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_23 = __pyx_t_20(__pyx_t_6); if (unlikely(!__pyx_t_23)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_23);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_6), 2) < 0) __PYX_ERR(0, 1041, __pyx_L1_error)
      __pyx_t_20 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_20 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1041, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1041, __pyx_L1_error)
    if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1041, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1041, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_23);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1041, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_23));
    __pyx_t_23 = 0;
  }
  __pyx_L3:;
 1042: 
+1043:     if labelsorted == 1:
  __pyx_t_19 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_19) {
/* … */
  }
+1044:         X, Y = labelsort(n, X, Y)
    __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_22 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_23);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_23, function);
        __pyx_t_22 = 1;
      }
    }
    __pyx_t_1 = PyTuple_New(3+__pyx_t_22); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_22, __pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_22, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_22, ((PyObject *)__pyx_v_Y));
    __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1044, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1044, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_1);
      #else
      __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_20 = Py_TYPE(__pyx_t_4)->tp_iternext;
      index = 0; __pyx_t_23 = __pyx_t_20(__pyx_t_4); if (unlikely(!__pyx_t_23)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_23);
      index = 1; __pyx_t_1 = __pyx_t_20(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1044, __pyx_L1_error)
      __pyx_t_20 = NULL;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_20 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1044, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1044, __pyx_L1_error)
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1044, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_23);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1044, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_23));
    __pyx_t_23 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1044, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;
+1045:     r = 0
  __pyx_v_r = 0;
 1046: 
+1047:     Iter = 1
  __pyx_v_Iter = 1;
+1048:     while True:
  while (1) {
 1049: 
+1050:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_2; __pyx_t_24+=1) {
      __pyx_v_k = __pyx_t_24;
+1051:             I[X[k], Y[k]] = k + 1
      __pyx_t_25 = __pyx_v_k;
      __pyx_t_26 = __pyx_v_k;
      __pyx_t_27 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_28 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+1052:             Col[X[k], Y[k], 2] = col[k, 0]
      __pyx_t_29 = __pyx_v_k;
      __pyx_t_30 = 0;
      __pyx_t_31 = __pyx_v_k;
      __pyx_t_32 = __pyx_v_k;
      __pyx_t_33 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_34 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_35 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_35, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_col.diminfo[1].strides));
+1053:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_36 = __pyx_v_k;
      __pyx_t_37 = 1;
      __pyx_t_38 = __pyx_v_k;
      __pyx_t_39 = __pyx_v_k;
      __pyx_t_40 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_41 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_42 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_37, __pyx_pybuffernd_col.diminfo[1].strides));
+1054:             Col[X[k], Y[k], 0] = col[k, 2]
      __pyx_t_43 = __pyx_v_k;
      __pyx_t_44 = 2;
      __pyx_t_45 = __pyx_v_k;
      __pyx_t_46 = __pyx_v_k;
      __pyx_t_47 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_48 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_49 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_col.diminfo[1].strides));
    }
 1055: 
+1056:         showriteframe(sa, sf, fd, r, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_r, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+1057:         r = 1
    __pyx_v_r = 1;
 1058: 
+1059:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1059, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1059, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_23);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_23, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1059, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      } else {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1059, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1059, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_23 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1059, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_23); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 1059, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      if (!__pyx_t_19) break;
+1060:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_2; __pyx_t_24+=1) {
        __pyx_v_k = __pyx_t_24;
+1061:                 if a[k] == 1:
        __pyx_t_50 = __pyx_v_k;
        __pyx_t_19 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_19) {
/* … */
        }
      }
+1062:                     a[k] = 0
          __pyx_t_51 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+1063:                     xo = X[k]
          __pyx_t_52 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_X.diminfo[0].strides));
+1064:                     yo = Y[k]
          __pyx_t_53 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Y.diminfo[0].strides));
+1065:                     Io = I[xo, yo]
          __pyx_t_54 = __pyx_v_xo;
          __pyx_t_55 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_I.diminfo[1].strides));
+1066:                     red = col[k, 0]
          __pyx_t_56 = __pyx_v_k;
          __pyx_t_57 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_57, __pyx_pybuffernd_col.diminfo[1].strides));
+1067:                     green = col[k, 1]
          __pyx_t_58 = __pyx_v_k;
          __pyx_t_59 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_59, __pyx_pybuffernd_col.diminfo[1].strides));
+1068:                     blue = col[k, 2]
          __pyx_t_60 = __pyx_v_k;
          __pyx_t_61 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_61, __pyx_pybuffernd_col.diminfo[1].strides));
 1069: 
+1070:                     for deli in range(r + 1):
          __pyx_t_62 = (__pyx_v_r + 1);
          for (__pyx_t_63 = 0; __pyx_t_63 < __pyx_t_62; __pyx_t_63+=1) {
            __pyx_v_deli = __pyx_t_63;
+1071:                         delj = r - deli
            __pyx_v_delj = (__pyx_v_r - __pyx_v_deli);
+1072:                         i, j = xo + deli, yo + delj
            __pyx_t_64 = (__pyx_v_xo + __pyx_v_deli);
            __pyx_t_65 = (__pyx_v_yo + __pyx_v_delj);
            __pyx_v_i = __pyx_t_64;
            __pyx_v_j = __pyx_t_65;
+1073:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L23_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L23_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
+1074:                             if I[i, j] == 0:
              __pyx_t_65 = __pyx_v_i;
              __pyx_t_64 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_64, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1075:                                 if i > 0:
                __pyx_t_19 = ((__pyx_v_i > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L26;
                }
+1076:                                     PN = I[i - 1, j]
                  __pyx_t_68 = (__pyx_v_i - 1);
                  __pyx_t_69 = __pyx_v_j;
                  __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_69, __pyx_pybuffernd_I.diminfo[1].strides));
 1077:                                 else:
+1078:                                     PN = 0
                /*else*/ {
                  __pyx_v_PN = 0;
                }
                __pyx_L26:;
+1079:                                 if j > 0:
                __pyx_t_19 = ((__pyx_v_j > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L27;
                }
+1080:                                     PW = I[i, j - 1]
                  __pyx_t_70 = __pyx_v_i;
                  __pyx_t_71 = (__pyx_v_j - 1);
                  __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_I.diminfo[1].strides));
 1081:                                 else:
+1082:                                     PW = 0
                /*else*/ {
                  __pyx_v_PW = 0;
                }
                __pyx_L27:;
+1083:                                 if PN == Io or PW == Io:
                __pyx_t_66 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L29_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L29_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1084:                                     I[i, j] = Io
                  __pyx_t_72 = __pyx_v_i;
                  __pyx_t_73 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1085:                                     Col[i, j, 2] = red
                  __pyx_t_74 = __pyx_v_i;
                  __pyx_t_75 = __pyx_v_j;
                  __pyx_t_76 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1086:                                     Col[i, j, 1] = green
                  __pyx_t_77 = __pyx_v_i;
                  __pyx_t_78 = __pyx_v_j;
                  __pyx_t_79 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1087:                                     Col[i, j, 0] = blue
                  __pyx_t_80 = __pyx_v_i;
                  __pyx_t_81 = __pyx_v_j;
                  __pyx_t_82 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_81, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_82, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1088:                                     a[k] = 1
                  __pyx_t_83 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1089: 
+1090:                         i, j = xo - deli, yo + delj
            __pyx_t_84 = (__pyx_v_xo - __pyx_v_deli);
            __pyx_t_85 = (__pyx_v_yo + __pyx_v_delj);
            __pyx_v_i = __pyx_t_84;
            __pyx_v_j = __pyx_t_85;
+1091:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L32_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L32_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
+1092:                             if I[i, j] == 0:
              __pyx_t_85 = __pyx_v_i;
              __pyx_t_84 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_84, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1093:                                 if i < m - 1:
                __pyx_t_19 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L35;
                }
+1094:                                     PS = I[i + 1, j]
                  __pyx_t_86 = (__pyx_v_i + 1);
                  __pyx_t_87 = __pyx_v_j;
                  __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_87, __pyx_pybuffernd_I.diminfo[1].strides));
 1095:                                 else:
+1096:                                     PS = 0
                /*else*/ {
                  __pyx_v_PS = 0;
                }
                __pyx_L35:;
+1097:                                 if j > 0:
                __pyx_t_19 = ((__pyx_v_j > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L36;
                }
+1098:                                     PW = I[i, j - 1]
                  __pyx_t_88 = __pyx_v_i;
                  __pyx_t_89 = (__pyx_v_j - 1);
                  __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_I.diminfo[1].strides));
 1099:                                 else:
+1100:                                     PW = 0
                /*else*/ {
                  __pyx_v_PW = 0;
                }
                __pyx_L36:;
+1101:                                 if PW == Io or PS == Io:
                __pyx_t_66 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L38_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L38_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1102:                                     I[i, j] = Io
                  __pyx_t_90 = __pyx_v_i;
                  __pyx_t_91 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_91, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1103:                                     Col[i, j, 2] = red
                  __pyx_t_92 = __pyx_v_i;
                  __pyx_t_93 = __pyx_v_j;
                  __pyx_t_94 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_94, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1104:                                     Col[i, j, 1] = green
                  __pyx_t_95 = __pyx_v_i;
                  __pyx_t_96 = __pyx_v_j;
                  __pyx_t_97 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_96, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_97, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1105:                                     Col[i, j, 0] = blue
                  __pyx_t_98 = __pyx_v_i;
                  __pyx_t_99 = __pyx_v_j;
                  __pyx_t_100 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1106:                                     a[k] = 1
                  __pyx_t_101 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1107: 
+1108:                         i, j = xo - deli, yo - delj
            __pyx_t_102 = (__pyx_v_xo - __pyx_v_deli);
            __pyx_t_103 = (__pyx_v_yo - __pyx_v_delj);
            __pyx_v_i = __pyx_t_102;
            __pyx_v_j = __pyx_t_103;
+1109:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L41_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L41_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
+1110:                             if I[i, j] == 0:
              __pyx_t_103 = __pyx_v_i;
              __pyx_t_102 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1111:                                 if i < m - 1:
                __pyx_t_19 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L44;
                }
+1112:                                     PS = I[i + 1, j]
                  __pyx_t_104 = (__pyx_v_i + 1);
                  __pyx_t_105 = __pyx_v_j;
                  __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_105, __pyx_pybuffernd_I.diminfo[1].strides));
 1113:                                 else:
+1114:                                     PS = 0
                /*else*/ {
                  __pyx_v_PS = 0;
                }
                __pyx_L44:;
+1115:                                 if j < n - 1:
                __pyx_t_19 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L45;
                }
+1116:                                     PE = I[i, j + 1]
                  __pyx_t_106 = __pyx_v_i;
                  __pyx_t_107 = (__pyx_v_j + 1);
                  __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_I.diminfo[1].strides));
 1117:                                 else:
+1118:                                     PE = 0
                /*else*/ {
                  __pyx_v_PE = 0;
                }
                __pyx_L45:;
+1119:                                 if PE == Io or PS == Io:
                __pyx_t_66 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L47_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L47_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1120:                                     I[i, j] = Io
                  __pyx_t_108 = __pyx_v_i;
                  __pyx_t_109 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1121:                                     Col[i, j, 2] = red
                  __pyx_t_110 = __pyx_v_i;
                  __pyx_t_111 = __pyx_v_j;
                  __pyx_t_112 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_112, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1122:                                     Col[i, j, 1] = green
                  __pyx_t_113 = __pyx_v_i;
                  __pyx_t_114 = __pyx_v_j;
                  __pyx_t_115 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1123:                                     Col[i, j, 0] = blue
                  __pyx_t_116 = __pyx_v_i;
                  __pyx_t_117 = __pyx_v_j;
                  __pyx_t_118 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1124:                                     a[k] = 1
                  __pyx_t_119 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1125: 
+1126:                         i, j = xo + deli, yo - delj
            __pyx_t_120 = (__pyx_v_xo + __pyx_v_deli);
            __pyx_t_121 = (__pyx_v_yo - __pyx_v_delj);
            __pyx_v_i = __pyx_t_120;
            __pyx_v_j = __pyx_t_121;
+1127:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L50_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L50_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
          }
+1128:                             if I[i, j] == 0:
              __pyx_t_121 = __pyx_v_i;
              __pyx_t_120 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1129:                                 if i > 0:
                __pyx_t_19 = ((__pyx_v_i > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L53;
                }
+1130:                                     PN = I[i - 1, j]
                  __pyx_t_122 = (__pyx_v_i - 1);
                  __pyx_t_123 = __pyx_v_j;
                  __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_123, __pyx_pybuffernd_I.diminfo[1].strides));
 1131:                                 else:
+1132:                                     PN = 0
                /*else*/ {
                  __pyx_v_PN = 0;
                }
                __pyx_L53:;
+1133:                                 if j < n - 1:
                __pyx_t_19 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L54;
                }
+1134:                                     PE = I[i, j + 1]
                  __pyx_t_124 = __pyx_v_i;
                  __pyx_t_125 = (__pyx_v_j + 1);
                  __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_I.diminfo[1].strides));
 1135:                                 else:
+1136:                                     PE = 0
                /*else*/ {
                  __pyx_v_PE = 0;
                }
                __pyx_L54:;
+1137:                                 if PN == Io or PE == Io:
                __pyx_t_66 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L56_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L56_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1138:                                     I[i, j] = Io
                  __pyx_t_126 = __pyx_v_i;
                  __pyx_t_127 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_127, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1139:                                     Col[i, j, 2] = red
                  __pyx_t_128 = __pyx_v_i;
                  __pyx_t_129 = __pyx_v_j;
                  __pyx_t_130 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_130, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1140:                                     Col[i, j, 1] = green
                  __pyx_t_131 = __pyx_v_i;
                  __pyx_t_132 = __pyx_v_j;
                  __pyx_t_133 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1141:                                     Col[i, j, 0] = blue
                  __pyx_t_134 = __pyx_v_i;
                  __pyx_t_135 = __pyx_v_j;
                  __pyx_t_136 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_135, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_136, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1142:                                     a[k] = 1
                  __pyx_t_137 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+1143:             showriteframe(sa, sf, fd, r, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_r, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+1144:             r = r + 1
      __pyx_v_r = (__pyx_v_r + 1);
    }
+1145:         if asy == 0:
    __pyx_t_19 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_19) {
/* … */
    }
+1146:             break
      goto __pyx_L12_break;
 1147:         else:
+1148:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_7 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1148, __pyx_L1_error)
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_all); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1148, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1148, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_23 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1148, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_23, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1148, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 1148, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_19) {
/* … */
      }
+1149:                 break
        goto __pyx_L12_break;
 1150:             else:
+1151:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1151, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+1152:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7);
        __pyx_t_4 = 0;
        __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1152, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1152, __pyx_L1_error)
        __pyx_t_8 = ((PyArrayObject *)__pyx_t_6);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1152, __pyx_L1_error)
        }
        __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;
+1153:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ones); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1153, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1153, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1153, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1153, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
+1154:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_centroids); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_23 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_5 = NULL;
        __pyx_t_22 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_22 = 1;
          }
        }
        __pyx_t_21 = PyTuple_New(4+__pyx_t_22); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_21);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_21, 0+__pyx_t_22, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_21, 1+__pyx_t_22, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_21, 2+__pyx_t_22, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_23);
        PyTuple_SET_ITEM(__pyx_t_21, 3+__pyx_t_22, __pyx_t_23);
        __pyx_t_6 = 0;
        __pyx_t_1 = 0;
        __pyx_t_23 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_21, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
          PyObject* sequence = __pyx_t_4;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 1154, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_21 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_21 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_21);
          #else
          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1154, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_21 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1154, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_21);
          #endif
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_23 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1154, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_20 = Py_TYPE(__pyx_t_23)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_20(__pyx_t_23); if (unlikely(!__pyx_t_7)) goto __pyx_L60_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_21 = __pyx_t_20(__pyx_t_23); if (unlikely(!__pyx_t_21)) goto __pyx_L60_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_21);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_23), 2) < 0) __PYX_ERR(0, 1154, __pyx_L1_error)
          __pyx_t_20 = NULL;
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          goto __pyx_L61_unpacking_done;
          __pyx_L60_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_20 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 1154, __pyx_L1_error)
          __pyx_L61_unpacking_done:;
        }
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1154, __pyx_L1_error)
        if (!(likely(((__pyx_t_21) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_21, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1154, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1154, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_21);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1154, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_21));
        __pyx_t_21 = 0;
+1155:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 1156: 
+1157:     toc = time.time()
  __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_21, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  __pyx_t_21 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_21)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_21);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_21) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_21); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1157, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1157, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_toc = __pyx_t_18;
+1158:     obj.exetime = toc - tic
  __pyx_t_4 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_4) < 0) __PYX_ERR(0, 1158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1159:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 1159, __pyx_L1_error)
+1160:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 1160, __pyx_L1_error)
+1161:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 1161, __pyx_L1_error)
+1162:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 1162, __pyx_L1_error)
+1163:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 1164: 
 1165: 
+1166: def Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_15Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_15Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D = {"Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_15Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_15Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_14Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_14Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_r;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_23);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__25 = PyTuple_Pack(38, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_k, __pyx_n_s_r, __pyx_n_s_Io, __pyx_n_s_Iter, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__25);
  __Pyx_GIVEREF(__pyx_tuple__25);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_15Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_without_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_2, __pyx_t_2) < 0) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 38, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_2, 1166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 1166, __pyx_L1_error)
 1167:     # Grabbing data from the input object
+1168:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+1169:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+1170:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+1171:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+1172:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+1173:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+1174:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_3;
+1175:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_3;
+1176:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_3;
+1177:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+1178:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
 1179: 
 1180:     # Declaring other variables
 1181:     cdef double tic, toc
 1182:     cdef long long i, j, deli, delj, xo, yo, PN, PE, PW, PS , k, r, Io, Iter
 1183:     cdef float red, green, blue
+1184:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1184, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1184, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1185:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1185, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1185, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+1186:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1186, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1186, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1187:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1187, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1187, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+1188:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1188, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1188, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1189:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1189, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1189, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+1190:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1190, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1190, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1191:     plantseed(myseed)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1191, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1192:     col = np.random.random((p, 3))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1192, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1192, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1192, __pyx_L1_error)
  }
  __pyx_t_14 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_4));
  __pyx_t_4 = 0;
+1193:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1193, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1193, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_tic = __pyx_t_18;
 1194: 
+1195:     if pdelNxy == []:
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 1195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_19) {
/* … */
    goto __pyx_L3;
  }
+1196:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_7 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1196, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1196, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1196, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1196, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_20 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_20(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_5 = __pyx_t_20(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1196, __pyx_L1_error)
      __pyx_t_20 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_20 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1196, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1196, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1196, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1196, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1196, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 1197:     else:
+1198:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_21 = NULL;
    __pyx_t_22 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_21)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_21);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_22 = 1;
      }
    }
    __pyx_t_23 = PyTuple_New(7+__pyx_t_22); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    if (__pyx_t_21) {
      __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_21); __pyx_t_21 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_22, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_22, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_23, 2+__pyx_t_22, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_23, 3+__pyx_t_22, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_23, 4+__pyx_t_22, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_23, 5+__pyx_t_22, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_23, 6+__pyx_t_22, __pyx_int_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_23, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1198, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_23 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_23 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_23);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_23 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_20 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_20(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_23 = __pyx_t_20(__pyx_t_6); if (unlikely(!__pyx_t_23)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_23);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_6), 2) < 0) __PYX_ERR(0, 1198, __pyx_L1_error)
      __pyx_t_20 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_20 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1198, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1198, __pyx_L1_error)
    if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1198, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1198, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_23);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1198, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_23));
    __pyx_t_23 = 0;
  }
  __pyx_L3:;
 1199: 
+1200:     if labelsorted == 1:
  __pyx_t_19 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_19) {
/* … */
  }
+1201:         X, Y = labelsort(n, X, Y)
    __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_22 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_23);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_23, function);
        __pyx_t_22 = 1;
      }
    }
    __pyx_t_1 = PyTuple_New(3+__pyx_t_22); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_22, __pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_22, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_22, ((PyObject *)__pyx_v_Y));
    __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1201, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_1);
      #else
      __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1201, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1201, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1201, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_20 = Py_TYPE(__pyx_t_4)->tp_iternext;
      index = 0; __pyx_t_23 = __pyx_t_20(__pyx_t_4); if (unlikely(!__pyx_t_23)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_23);
      index = 1; __pyx_t_1 = __pyx_t_20(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1201, __pyx_L1_error)
      __pyx_t_20 = NULL;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_20 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1201, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1201, __pyx_L1_error)
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1201, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_23);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1201, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_23));
    __pyx_t_23 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1201, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;
+1202:     r = 0
  __pyx_v_r = 0;
 1203: 
+1204:     Iter = 1
  __pyx_v_Iter = 1;
+1205:     while True:
  while (1) {
 1206: 
+1207:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_2; __pyx_t_24+=1) {
      __pyx_v_k = __pyx_t_24;
+1208:             I[X[k], Y[k]] = k + 1
      __pyx_t_25 = __pyx_v_k;
      __pyx_t_26 = __pyx_v_k;
      __pyx_t_27 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_25, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_28 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+1209:             Col[X[k], Y[k], 2] = col[k, 0]
      __pyx_t_29 = __pyx_v_k;
      __pyx_t_30 = 0;
      __pyx_t_31 = __pyx_v_k;
      __pyx_t_32 = __pyx_v_k;
      __pyx_t_33 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_34 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_35 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_35, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_col.diminfo[1].strides));
+1210:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_36 = __pyx_v_k;
      __pyx_t_37 = 1;
      __pyx_t_38 = __pyx_v_k;
      __pyx_t_39 = __pyx_v_k;
      __pyx_t_40 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_41 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_42 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_37, __pyx_pybuffernd_col.diminfo[1].strides));
+1211:             Col[X[k], Y[k], 0] = col[k, 2]
      __pyx_t_43 = __pyx_v_k;
      __pyx_t_44 = 2;
      __pyx_t_45 = __pyx_v_k;
      __pyx_t_46 = __pyx_v_k;
      __pyx_t_47 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_48 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_49 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_col.diminfo[1].strides));
    }
 1212: 
+1213:         showriteframe(sa, sf, fd, r, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_r, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+1214:         r = 1
    __pyx_v_r = 1;
 1215: 
 1216: 
+1217:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1217, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1217, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_23);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_23, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      } else {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1217, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_23 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1217, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_23); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 1217, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      if (!__pyx_t_19) break;
+1218:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_2; __pyx_t_24+=1) {
        __pyx_v_k = __pyx_t_24;
+1219:                 if a[k] == 1:
        __pyx_t_50 = __pyx_v_k;
        __pyx_t_19 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_19) {
/* … */
        }
      }
+1220:                     a[k] = 0
          __pyx_t_51 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+1221:                     xo = X[k]
          __pyx_t_52 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_X.diminfo[0].strides));
+1222:                     yo = Y[k]
          __pyx_t_53 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Y.diminfo[0].strides));
+1223:                     Io = I[xo, yo]
          __pyx_t_54 = __pyx_v_xo;
          __pyx_t_55 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_I.diminfo[1].strides));
+1224:                     red = col[k, 0]
          __pyx_t_56 = __pyx_v_k;
          __pyx_t_57 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_57, __pyx_pybuffernd_col.diminfo[1].strides));
+1225:                     green = col[k, 1]
          __pyx_t_58 = __pyx_v_k;
          __pyx_t_59 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_59, __pyx_pybuffernd_col.diminfo[1].strides));
+1226:                     blue = col[k, 2]
          __pyx_t_60 = __pyx_v_k;
          __pyx_t_61 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_61, __pyx_pybuffernd_col.diminfo[1].strides));
 1227: 
+1228:                     for deli in range(r + 1):
          __pyx_t_62 = (__pyx_v_r + 1);
          for (__pyx_t_63 = 0; __pyx_t_63 < __pyx_t_62; __pyx_t_63+=1) {
            __pyx_v_deli = __pyx_t_63;
+1229:                         delj = r
            __pyx_v_delj = __pyx_v_r;
+1230:                         i, j = xo + deli, yo + delj
            __pyx_t_64 = (__pyx_v_xo + __pyx_v_deli);
            __pyx_t_65 = (__pyx_v_yo + __pyx_v_delj);
            __pyx_v_i = __pyx_t_64;
            __pyx_v_j = __pyx_t_65;
+1231:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L23_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L23_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
+1232:                             if I[i, j] == 0:
              __pyx_t_65 = __pyx_v_i;
              __pyx_t_64 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_64, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1233:                                 if i > 0:
                __pyx_t_19 = ((__pyx_v_i > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L26;
                }
+1234:                                     PN = I[i - 1, j]
                  __pyx_t_68 = (__pyx_v_i - 1);
                  __pyx_t_69 = __pyx_v_j;
                  __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_69, __pyx_pybuffernd_I.diminfo[1].strides));
 1235:                                 else:
+1236:                                     PN = 0
                /*else*/ {
                  __pyx_v_PN = 0;
                }
                __pyx_L26:;
+1237:                                 if j > 0:
                __pyx_t_19 = ((__pyx_v_j > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L27;
                }
+1238:                                     PW = I[i, j - 1]
                  __pyx_t_70 = __pyx_v_i;
                  __pyx_t_71 = (__pyx_v_j - 1);
                  __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_I.diminfo[1].strides));
 1239:                                 else:
+1240:                                     PW = 0
                /*else*/ {
                  __pyx_v_PW = 0;
                }
                __pyx_L27:;
+1241:                                 if PN == Io or PW == Io:
                __pyx_t_66 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L29_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L29_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1242:                                     I[i, j] = Io
                  __pyx_t_72 = __pyx_v_i;
                  __pyx_t_73 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1243:                                     Col[i, j, 2] = red
                  __pyx_t_74 = __pyx_v_i;
                  __pyx_t_75 = __pyx_v_j;
                  __pyx_t_76 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1244:                                     Col[i, j, 1] = green
                  __pyx_t_77 = __pyx_v_i;
                  __pyx_t_78 = __pyx_v_j;
                  __pyx_t_79 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1245:                                     Col[i, j, 0] = blue
                  __pyx_t_80 = __pyx_v_i;
                  __pyx_t_81 = __pyx_v_j;
                  __pyx_t_82 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_81, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_82, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1246:                                     a[k] = 1
                  __pyx_t_83 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1247: 
+1248:                         i, j = xo - deli, yo + delj
            __pyx_t_84 = (__pyx_v_xo - __pyx_v_deli);
            __pyx_t_85 = (__pyx_v_yo + __pyx_v_delj);
            __pyx_v_i = __pyx_t_84;
            __pyx_v_j = __pyx_t_85;
+1249:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L32_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L32_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
+1250:                             if I[i, j] == 0:
              __pyx_t_85 = __pyx_v_i;
              __pyx_t_84 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_84, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1251:                                 if i < m - 1:
                __pyx_t_19 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L35;
                }
+1252:                                     PS = I[i + 1, j]
                  __pyx_t_86 = (__pyx_v_i + 1);
                  __pyx_t_87 = __pyx_v_j;
                  __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_87, __pyx_pybuffernd_I.diminfo[1].strides));
 1253:                                 else:
+1254:                                     PS = 0
                /*else*/ {
                  __pyx_v_PS = 0;
                }
                __pyx_L35:;
+1255:                                 if j > 0:
                __pyx_t_19 = ((__pyx_v_j > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L36;
                }
+1256:                                     PW = I[i, j - 1]
                  __pyx_t_88 = __pyx_v_i;
                  __pyx_t_89 = (__pyx_v_j - 1);
                  __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_I.diminfo[1].strides));
 1257:                                 else:
+1258:                                     PW = 0
                /*else*/ {
                  __pyx_v_PW = 0;
                }
                __pyx_L36:;
+1259:                                 if PW == Io or PS == Io:
                __pyx_t_66 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L38_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L38_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1260:                                     I[i, j] = Io
                  __pyx_t_90 = __pyx_v_i;
                  __pyx_t_91 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_91, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1261:                                     Col[i, j, 2] = red
                  __pyx_t_92 = __pyx_v_i;
                  __pyx_t_93 = __pyx_v_j;
                  __pyx_t_94 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_94, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1262:                                     Col[i, j, 1] = green
                  __pyx_t_95 = __pyx_v_i;
                  __pyx_t_96 = __pyx_v_j;
                  __pyx_t_97 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_96, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_97, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1263:                                     Col[i, j, 0] = blue
                  __pyx_t_98 = __pyx_v_i;
                  __pyx_t_99 = __pyx_v_j;
                  __pyx_t_100 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1264:                                     a[k] = 1
                  __pyx_t_101 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1265: 
+1266:                         i, j = xo - deli, yo - delj
            __pyx_t_102 = (__pyx_v_xo - __pyx_v_deli);
            __pyx_t_103 = (__pyx_v_yo - __pyx_v_delj);
            __pyx_v_i = __pyx_t_102;
            __pyx_v_j = __pyx_t_103;
+1267:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L41_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L41_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
+1268:                             if I[i, j] == 0:
              __pyx_t_103 = __pyx_v_i;
              __pyx_t_102 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1269:                                 if i < m - 1:
                __pyx_t_19 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L44;
                }
+1270:                                     PS = I[i + 1, j]
                  __pyx_t_104 = (__pyx_v_i + 1);
                  __pyx_t_105 = __pyx_v_j;
                  __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_105, __pyx_pybuffernd_I.diminfo[1].strides));
 1271:                                 else:
+1272:                                     PS = 0
                /*else*/ {
                  __pyx_v_PS = 0;
                }
                __pyx_L44:;
+1273:                                 if j < n - 1:
                __pyx_t_19 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L45;
                }
+1274:                                     PE = I[i, j + 1]
                  __pyx_t_106 = __pyx_v_i;
                  __pyx_t_107 = (__pyx_v_j + 1);
                  __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_I.diminfo[1].strides));
 1275:                                 else:
+1276:                                     PE = 0
                /*else*/ {
                  __pyx_v_PE = 0;
                }
                __pyx_L45:;
+1277:                                 if PE == Io or PS == Io:
                __pyx_t_66 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L47_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L47_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1278:                                     I[i, j] = Io
                  __pyx_t_108 = __pyx_v_i;
                  __pyx_t_109 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1279:                                     Col[i, j, 2] = red
                  __pyx_t_110 = __pyx_v_i;
                  __pyx_t_111 = __pyx_v_j;
                  __pyx_t_112 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_112, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1280:                                     Col[i, j, 1] = green
                  __pyx_t_113 = __pyx_v_i;
                  __pyx_t_114 = __pyx_v_j;
                  __pyx_t_115 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1281:                                     Col[i, j, 0] = blue
                  __pyx_t_116 = __pyx_v_i;
                  __pyx_t_117 = __pyx_v_j;
                  __pyx_t_118 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1282:                                     a[k] = 1
                  __pyx_t_119 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1283: 
+1284:                         i, j = xo + deli, yo - delj
            __pyx_t_120 = (__pyx_v_xo + __pyx_v_deli);
            __pyx_t_121 = (__pyx_v_yo - __pyx_v_delj);
            __pyx_v_i = __pyx_t_120;
            __pyx_v_j = __pyx_t_121;
+1285:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L50_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L50_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
+1286:                             if I[i, j] == 0:
              __pyx_t_121 = __pyx_v_i;
              __pyx_t_120 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1287:                                 if i > 0:
                __pyx_t_19 = ((__pyx_v_i > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L53;
                }
+1288:                                     PN = I[i - 1, j]
                  __pyx_t_122 = (__pyx_v_i - 1);
                  __pyx_t_123 = __pyx_v_j;
                  __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_123, __pyx_pybuffernd_I.diminfo[1].strides));
 1289:                                 else:
+1290:                                     PN = 0
                /*else*/ {
                  __pyx_v_PN = 0;
                }
                __pyx_L53:;
+1291:                                 if j < n - 1:
                __pyx_t_19 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L54;
                }
+1292:                                     PE = I[i, j + 1]
                  __pyx_t_124 = __pyx_v_i;
                  __pyx_t_125 = (__pyx_v_j + 1);
                  __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_I.diminfo[1].strides));
 1293:                                 else:
+1294:                                     PE = 0
                /*else*/ {
                  __pyx_v_PE = 0;
                }
                __pyx_L54:;
+1295:                                 if PN == Io or PE == Io:
                __pyx_t_66 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L56_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L56_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1296:                                     I[i, j] = Io
                  __pyx_t_126 = __pyx_v_i;
                  __pyx_t_127 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_127, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1297:                                     Col[i, j, 2] = red
                  __pyx_t_128 = __pyx_v_i;
                  __pyx_t_129 = __pyx_v_j;
                  __pyx_t_130 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_130, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1298:                                     Col[i, j, 1] = green
                  __pyx_t_131 = __pyx_v_i;
                  __pyx_t_132 = __pyx_v_j;
                  __pyx_t_133 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1299:                                     Col[i, j, 0] = blue
                  __pyx_t_134 = __pyx_v_i;
                  __pyx_t_135 = __pyx_v_j;
                  __pyx_t_136 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_135, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_136, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1300:                                     a[k] = 1
                  __pyx_t_137 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1301: 
 1302: 
 1303:                         # INTERCHANGE deli and delj
+1304:                         i, j = xo + delj, yo + deli
            __pyx_t_138 = (__pyx_v_xo + __pyx_v_delj);
            __pyx_t_139 = (__pyx_v_yo + __pyx_v_deli);
            __pyx_v_i = __pyx_t_138;
            __pyx_v_j = __pyx_t_139;
+1305:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L59_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L59_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
+1306:                             if I[i, j] == 0:
              __pyx_t_139 = __pyx_v_i;
              __pyx_t_138 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_139, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1307:                                 if i > 0:
                __pyx_t_19 = ((__pyx_v_i > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L62;
                }
+1308:                                     PN = I[i - 1, j]
                  __pyx_t_140 = (__pyx_v_i - 1);
                  __pyx_t_141 = __pyx_v_j;
                  __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_I.diminfo[1].strides));
 1309:                                 else:
+1310:                                     PN = 0
                /*else*/ {
                  __pyx_v_PN = 0;
                }
                __pyx_L62:;
+1311:                                 if j > 0:
                __pyx_t_19 = ((__pyx_v_j > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L63;
                }
+1312:                                     PW = I[i, j - 1]
                  __pyx_t_142 = __pyx_v_i;
                  __pyx_t_143 = (__pyx_v_j - 1);
                  __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_143, __pyx_pybuffernd_I.diminfo[1].strides));
 1313:                                 else:
+1314:                                     PW = 0
                /*else*/ {
                  __pyx_v_PW = 0;
                }
                __pyx_L63:;
+1315:                                 if PN == Io or PW == Io:
                __pyx_t_66 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L65_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L65_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1316:                                     I[i, j] = Io
                  __pyx_t_144 = __pyx_v_i;
                  __pyx_t_145 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_144, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_145, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1317:                                     Col[i, j, 2] = red
                  __pyx_t_146 = __pyx_v_i;
                  __pyx_t_147 = __pyx_v_j;
                  __pyx_t_148 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_148, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1318:                                     Col[i, j, 1] = green
                  __pyx_t_149 = __pyx_v_i;
                  __pyx_t_150 = __pyx_v_j;
                  __pyx_t_151 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_150, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_151, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1319:                                     Col[i, j, 0] = blue
                  __pyx_t_152 = __pyx_v_i;
                  __pyx_t_153 = __pyx_v_j;
                  __pyx_t_154 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_152, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_153, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_154, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1320:                                     a[k] = 1
                  __pyx_t_155 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1321: 
+1322:                         i, j = xo - delj, yo + deli
            __pyx_t_156 = (__pyx_v_xo - __pyx_v_delj);
            __pyx_t_157 = (__pyx_v_yo + __pyx_v_deli);
            __pyx_v_i = __pyx_t_156;
            __pyx_v_j = __pyx_t_157;
+1323:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L68_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L68_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
+1324:                             if I[i, j] == 0:
              __pyx_t_157 = __pyx_v_i;
              __pyx_t_156 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1325:                                 if i < m - 1:
                __pyx_t_19 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L71;
                }
+1326:                                     PS = I[i + 1, j]
                  __pyx_t_158 = (__pyx_v_i + 1);
                  __pyx_t_159 = __pyx_v_j;
                  __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_158, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_159, __pyx_pybuffernd_I.diminfo[1].strides));
 1327:                                 else:
+1328:                                     PS = 0
                /*else*/ {
                  __pyx_v_PS = 0;
                }
                __pyx_L71:;
+1329:                                 if j > 0:
                __pyx_t_19 = ((__pyx_v_j > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L72;
                }
+1330:                                     PW = I[i, j - 1]
                  __pyx_t_160 = __pyx_v_i;
                  __pyx_t_161 = (__pyx_v_j - 1);
                  __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_161, __pyx_pybuffernd_I.diminfo[1].strides));
 1331:                                 else:
+1332:                                     PW = 0
                /*else*/ {
                  __pyx_v_PW = 0;
                }
                __pyx_L72:;
+1333:                                 if PW == Io or PS == Io:
                __pyx_t_66 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L74_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L74_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1334:                                     I[i, j] = Io
                  __pyx_t_162 = __pyx_v_i;
                  __pyx_t_163 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1335:                                     Col[i, j, 2] = red
                  __pyx_t_164 = __pyx_v_i;
                  __pyx_t_165 = __pyx_v_j;
                  __pyx_t_166 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1336:                                     Col[i, j, 1] = green
                  __pyx_t_167 = __pyx_v_i;
                  __pyx_t_168 = __pyx_v_j;
                  __pyx_t_169 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_168, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1337:                                     Col[i, j, 0] = blue
                  __pyx_t_170 = __pyx_v_i;
                  __pyx_t_171 = __pyx_v_j;
                  __pyx_t_172 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_171, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_172, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1338:                                     a[k] = 1
                  __pyx_t_173 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_173, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1339: 
+1340:                         i, j = xo - delj, yo - deli
            __pyx_t_174 = (__pyx_v_xo - __pyx_v_delj);
            __pyx_t_175 = (__pyx_v_yo - __pyx_v_deli);
            __pyx_v_i = __pyx_t_174;
            __pyx_v_j = __pyx_t_175;
+1341:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L77_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L77_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
+1342:                             if I[i, j] == 0:
              __pyx_t_175 = __pyx_v_i;
              __pyx_t_174 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_174, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1343:                                 if i < m - 1:
                __pyx_t_19 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L80;
                }
+1344:                                     PS = I[i + 1, j]
                  __pyx_t_176 = (__pyx_v_i + 1);
                  __pyx_t_177 = __pyx_v_j;
                  __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_176, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_177, __pyx_pybuffernd_I.diminfo[1].strides));
 1345:                                 else:
+1346:                                     PS = 0
                /*else*/ {
                  __pyx_v_PS = 0;
                }
                __pyx_L80:;
+1347:                                 if j < n - 1:
                __pyx_t_19 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L81;
                }
+1348:                                     PE = I[i, j + 1]
                  __pyx_t_178 = __pyx_v_i;
                  __pyx_t_179 = (__pyx_v_j + 1);
                  __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_178, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_179, __pyx_pybuffernd_I.diminfo[1].strides));
 1349:                                 else:
+1350:                                     PE = 0
                /*else*/ {
                  __pyx_v_PE = 0;
                }
                __pyx_L81:;
+1351:                                 if PE == Io or PS == Io:
                __pyx_t_66 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L83_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L83_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1352:                                     I[i, j] = Io
                  __pyx_t_180 = __pyx_v_i;
                  __pyx_t_181 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_180, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_181, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1353:                                     Col[i, j, 2] = red
                  __pyx_t_182 = __pyx_v_i;
                  __pyx_t_183 = __pyx_v_j;
                  __pyx_t_184 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_183, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1354:                                     Col[i, j, 1] = green
                  __pyx_t_185 = __pyx_v_i;
                  __pyx_t_186 = __pyx_v_j;
                  __pyx_t_187 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1355:                                     Col[i, j, 0] = blue
                  __pyx_t_188 = __pyx_v_i;
                  __pyx_t_189 = __pyx_v_j;
                  __pyx_t_190 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_190, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1356:                                     a[k] = 1
                  __pyx_t_191 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_191, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1357: 
+1358:                         i, j = xo + delj, yo - deli
            __pyx_t_192 = (__pyx_v_xo + __pyx_v_delj);
            __pyx_t_193 = (__pyx_v_yo - __pyx_v_deli);
            __pyx_v_i = __pyx_t_192;
            __pyx_v_j = __pyx_t_193;
+1359:                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
            __pyx_t_66 = (0 <= __pyx_v_i);
            if (__pyx_t_66) {
              __pyx_t_66 = (__pyx_v_i <= (__pyx_v_m - 1));
            }
            __pyx_t_67 = (__pyx_t_66 != 0);
            if (__pyx_t_67) {
            } else {
              __pyx_t_19 = __pyx_t_67;
              goto __pyx_L86_bool_binop_done;
            }
            __pyx_t_67 = (0 <= __pyx_v_j);
            if (__pyx_t_67) {
              __pyx_t_67 = (__pyx_v_j <= (__pyx_v_n - 1));
            }
            __pyx_t_66 = (__pyx_t_67 != 0);
            __pyx_t_19 = __pyx_t_66;
            __pyx_L86_bool_binop_done:;
            if (__pyx_t_19) {
/* … */
            }
          }
+1360:                             if I[i, j] == 0:
              __pyx_t_193 = __pyx_v_i;
              __pyx_t_192 = __pyx_v_j;
              __pyx_t_19 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_193, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_192, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
              if (__pyx_t_19) {
/* … */
              }
+1361:                                 if i > 0:
                __pyx_t_19 = ((__pyx_v_i > 0) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L89;
                }
+1362:                                     PN = I[i - 1, j]
                  __pyx_t_194 = (__pyx_v_i - 1);
                  __pyx_t_195 = __pyx_v_j;
                  __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_194, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_195, __pyx_pybuffernd_I.diminfo[1].strides));
 1363:                                 else:
+1364:                                     PN = 0
                /*else*/ {
                  __pyx_v_PN = 0;
                }
                __pyx_L89:;
+1365:                                 if j < n - 1:
                __pyx_t_19 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                if (__pyx_t_19) {
/* … */
                  goto __pyx_L90;
                }
+1366:                                     PE = I[i, j + 1]
                  __pyx_t_196 = __pyx_v_i;
                  __pyx_t_197 = (__pyx_v_j + 1);
                  __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_196, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_197, __pyx_pybuffernd_I.diminfo[1].strides));
 1367:                                 else:
+1368:                                     PE = 0
                /*else*/ {
                  __pyx_v_PE = 0;
                }
                __pyx_L90:;
+1369:                                 if PN == Io or PE == Io:
                __pyx_t_66 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                if (!__pyx_t_66) {
                } else {
                  __pyx_t_19 = __pyx_t_66;
                  goto __pyx_L92_bool_binop_done;
                }
                __pyx_t_66 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                __pyx_t_19 = __pyx_t_66;
                __pyx_L92_bool_binop_done:;
                if (__pyx_t_19) {
/* … */
                }
+1370:                                     I[i, j] = Io
                  __pyx_t_198 = __pyx_v_i;
                  __pyx_t_199 = __pyx_v_j;
                  *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_199, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1371:                                     Col[i, j, 2] = red
                  __pyx_t_200 = __pyx_v_i;
                  __pyx_t_201 = __pyx_v_j;
                  __pyx_t_202 = 2;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_200, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_201, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_202, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1372:                                     Col[i, j, 1] = green
                  __pyx_t_203 = __pyx_v_i;
                  __pyx_t_204 = __pyx_v_j;
                  __pyx_t_205 = 1;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_204, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_205, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1373:                                     Col[i, j, 0] = blue
                  __pyx_t_206 = __pyx_v_i;
                  __pyx_t_207 = __pyx_v_j;
                  __pyx_t_208 = 0;
                  *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_206, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_207, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_208, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1374:                                     a[k] = 1
                  __pyx_t_209 = __pyx_v_k;
                  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_209, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+1375:             showriteframe(sa, sf, fd, r, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_r, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+1376:             r = r + 1
      __pyx_v_r = (__pyx_v_r + 1);
    }
 1377: 
+1378:         if asy == 0:
    __pyx_t_19 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_19) {
/* … */
    }
+1379:             break
      goto __pyx_L12_break;
 1380:         else:
+1381:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_7 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1381, __pyx_L1_error)
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_all); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1381, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_23 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1381, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_23, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 1381, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_19) {
/* … */
      }
+1382:                 break
        goto __pyx_L12_break;
 1383:             else:
+1384:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1384, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+1385:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7);
        __pyx_t_4 = 0;
        __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1385, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1385, __pyx_L1_error)
        __pyx_t_8 = ((PyArrayObject *)__pyx_t_6);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1385, __pyx_L1_error)
        }
        __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;
+1386:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ones); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1386, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1386, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1386, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
+1387:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_centroids); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_23 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_5 = NULL;
        __pyx_t_22 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_22 = 1;
          }
        }
        __pyx_t_21 = PyTuple_New(4+__pyx_t_22); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_21);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_21, 0+__pyx_t_22, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_21, 1+__pyx_t_22, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_21, 2+__pyx_t_22, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_23);
        PyTuple_SET_ITEM(__pyx_t_21, 3+__pyx_t_22, __pyx_t_23);
        __pyx_t_6 = 0;
        __pyx_t_1 = 0;
        __pyx_t_23 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_21, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
          PyObject* sequence = __pyx_t_4;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 1387, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_21 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_21 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_21);
          #else
          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1387, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_21 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1387, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_21);
          #endif
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_23 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1387, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_20 = Py_TYPE(__pyx_t_23)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_20(__pyx_t_23); if (unlikely(!__pyx_t_7)) goto __pyx_L96_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_21 = __pyx_t_20(__pyx_t_23); if (unlikely(!__pyx_t_21)) goto __pyx_L96_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_21);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_20(__pyx_t_23), 2) < 0) __PYX_ERR(0, 1387, __pyx_L1_error)
          __pyx_t_20 = NULL;
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          goto __pyx_L97_unpacking_done;
          __pyx_L96_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_20 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 1387, __pyx_L1_error)
          __pyx_L97_unpacking_done:;
        }
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1387, __pyx_L1_error)
        if (!(likely(((__pyx_t_21) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_21, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1387, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_15); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1387, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_21);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_15);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_16, __pyx_t_15);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1387, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_21));
        __pyx_t_21 = 0;
+1388:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 1389: 
+1390:     toc = time.time()
  __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 1390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_21);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_21, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  __pyx_t_21 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_21)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_21);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_21) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_21); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1390, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1390, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1390, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_toc = __pyx_t_18;
+1391:     obj.exetime = toc - tic
  __pyx_t_4 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_4) < 0) __PYX_ERR(0, 1391, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1392:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 1392, __pyx_L1_error)
+1393:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 1393, __pyx_L1_error)
+1394:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 1394, __pyx_L1_error)
+1395:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 1395, __pyx_L1_error)
+1396:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 1397: 
 1398: 
+1399: def Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_17Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_17Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D = {"Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_17Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_17Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_16Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_16Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_gr2D = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_win;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  PY_LONG_LONG __pyx_v_rmax;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_rad;
  float __pyx_v_dr;
  float __pyx_v_tmp;
  float __pyx_v_gr2DValmax;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_gr2DVal = 0;
  PyArrayObject *__pyx_v_r = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_gr2DVal;
  __Pyx_Buffer __pyx_pybuffer_gr2DVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_r;
  __Pyx_Buffer __pyx_pybuffer_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_gr2DVal.pybuffer.buf = NULL;
  __pyx_pybuffer_gr2DVal.refcount = 0;
  __pyx_pybuffernd_gr2DVal.data = NULL;
  __pyx_pybuffernd_gr2DVal.rcbuffer = &__pyx_pybuffer_gr2DVal;
  __pyx_pybuffer_r.pybuffer.buf = NULL;
  __pyx_pybuffer_r.refcount = 0;
  __pyx_pybuffernd_r.data = NULL;
  __pyx_pybuffernd_r.rcbuffer = &__pyx_pybuffer_r;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_25);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_gr2D);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_gr2DVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__27 = PyTuple_Pack(51, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_gr2D, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_k, __pyx_n_s_Io, __pyx_n_s_countim, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_rmax, __pyx_n_s_Iter, __pyx_n_s_rad, __pyx_n_s_dr, __pyx_n_s_tmp, __pyx_n_s_gr2DValmax, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_gr2DVal, __pyx_n_s_r, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 1399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__27);
  __Pyx_GIVEREF(__pyx_tuple__27);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_17Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N4_with_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_3, __pyx_t_2) < 0) __PYX_ERR(0, 1399, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 51, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_3, 1399, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 1399, __pyx_L1_error)
 1400:     # Grabbing data from the input object
+1401:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+1402:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1402, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+1403:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1403, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+1404:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+1405:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1405, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+1406:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1406, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+1407:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1407, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_3;
+1408:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1408, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_3;
+1409:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1409, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_3;
+1410:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+1411:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+1412:     gr2D = obj.gr2D
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_gr2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_gr2D = __pyx_t_1;
  __pyx_t_1 = 0;
 1413: 
 1414:     # Declaring other variables
 1415:     cdef double tic, toc
 1416:     cdef long long i, j, deli, delj, xo, yo, PN, PE, PW, PS , k, Io, countim, win, xmin, xmax, ymin, ymax, rmax, Iter
 1417:     cdef float rad, dr, tmp, gr2DValmax, red, green, blue
+1418:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1418, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1418, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1419:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1419, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1419, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+1420:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1420, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1420, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1420, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1421:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1421, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1421, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+1422:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1422, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1422, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1423:     cdef np.ndarray[np.float64_t, ndim = 1] gr2DVal = np.zeros(p, dtype=np.float64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1423, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1423, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_gr2DVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1423, __pyx_L1_error)
    } else {__pyx_pybuffernd_gr2DVal.diminfo[0].strides = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_gr2DVal.diminfo[0].shape = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_gr2DVal = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+1424:     cdef np.ndarray[np.float64_t, ndim = 1] r = np.zeros(p, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1424, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_r.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1424, __pyx_L1_error)
    } else {__pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_r = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1425:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1425, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1425, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+1426:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1426, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1426, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1427:     plantseed(myseed)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1427, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+1428:     col = np.random.random((p, 3))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1428, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1428, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1428, __pyx_L1_error)
  }
  __pyx_t_16 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_7));
  __pyx_t_7 = 0;
+1429:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1429, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1429, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1429, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_tic = __pyx_t_20;
 1430: 
+1431:     if pdelNxy == []:
  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1431, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 1431, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_21) {
/* … */
    goto __pyx_L3;
  }
+1432:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_4 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1432, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_22(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_5 = __pyx_t_22(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_6), 2) < 0) __PYX_ERR(0, 1432, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1432, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1432, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1432, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1432, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
    __pyx_t_7 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1432, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 1433:     else:
+1434:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_23 = NULL;
    __pyx_t_24 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_23)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_23);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_24 = 1;
      }
    }
    __pyx_t_25 = PyTuple_New(7+__pyx_t_24); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    if (__pyx_t_23) {
      __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_23); __pyx_t_23 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_24, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_24, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_24, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_24, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_24, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_25, 5+__pyx_t_24, __pyx_t_1);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_25, 6+__pyx_t_24, __pyx_int_1);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_25, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1434, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_25 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_25 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_25);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1434, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_25 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1434, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1434, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_25 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_25)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_25);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1434, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1434, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1434, __pyx_L1_error)
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1434, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1434, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
    __pyx_t_7 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1434, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
  }
  __pyx_L3:;
 1435: 
+1436:     if labelsorted == 1:
  __pyx_t_21 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_21) {
/* … */
  }
+1437:         X, Y = labelsort(n, X, Y)
    __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = NULL;
    __pyx_t_24 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_25);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_25, function);
        __pyx_t_24 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(3+__pyx_t_24); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_24, __pyx_t_7);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_24, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_24, ((PyObject *)__pyx_v_Y));
    __pyx_t_7 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1437, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_25 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_25 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_25 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1437, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1437, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1437, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_25 = __pyx_t_22(__pyx_t_7); if (unlikely(!__pyx_t_25)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_25);
      index = 1; __pyx_t_6 = __pyx_t_22(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1437, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1437, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1437, __pyx_L1_error)
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1437, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1437, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1437, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;
 1438: 
+1439:     Iter = 1
  __pyx_v_Iter = 1;
+1440:     while True:
  while (1) {
+1441:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
      __pyx_v_k = __pyx_t_26;
+1442:             I[X[k], Y[k]] = k + 1
      __pyx_t_27 = __pyx_v_k;
      __pyx_t_28 = __pyx_v_k;
      __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_30 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+1443:             gr2DVal[k] = gr2D(X[k], Y[k], k + 1)
      __pyx_t_31 = __pyx_v_k;
      __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_32 = __pyx_v_k;
      __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_gr2D);
      __pyx_t_1 = __pyx_v_gr2D; __pyx_t_5 = NULL;
      __pyx_t_24 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_24 = 1;
        }
      }
      __pyx_t_23 = PyTuple_New(3+__pyx_t_24); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_24, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_25);
      PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_24, __pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_23, 2+__pyx_t_24, __pyx_t_7);
      __pyx_t_6 = 0;
      __pyx_t_25 = 0;
      __pyx_t_7 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_23, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_33 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_33 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 1443, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_34 = __pyx_v_k;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_gr2DVal.diminfo[0].strides) = __pyx_t_33;
+1444:             Col[X[k], Y[k], 2] = col[k, 0]
      __pyx_t_35 = __pyx_v_k;
      __pyx_t_36 = 0;
      __pyx_t_37 = __pyx_v_k;
      __pyx_t_38 = __pyx_v_k;
      __pyx_t_39 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_40 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_41 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_col.diminfo[1].strides));
+1445:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_42 = __pyx_v_k;
      __pyx_t_43 = 1;
      __pyx_t_44 = __pyx_v_k;
      __pyx_t_45 = __pyx_v_k;
      __pyx_t_46 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_47 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_48 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_col.diminfo[1].strides));
+1446:             Col[X[k], Y[k], 0] = col[k, 2]
      __pyx_t_49 = __pyx_v_k;
      __pyx_t_50 = 2;
      __pyx_t_51 = __pyx_v_k;
      __pyx_t_52 = __pyx_v_k;
      __pyx_t_53 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_54 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_55 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_54, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_55, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_col.diminfo[1].strides));
    }
 1447: 
+1448:         gr2DValmax = max(gr2DVal)
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1448, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_gr2DVal));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_gr2DVal));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_gr2DVal));
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1448, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_56 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_56 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1448, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_gr2DValmax = __pyx_t_56;
+1449:         countim = 0
    __pyx_v_countim = 0;
+1450:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+1451:         countim = 1
    __pyx_v_countim = 1;
+1452:         rmax = 0
    __pyx_v_rmax = 0;
+1453:         Io = 0; xo = 0; yo = 0;
    __pyx_v_Io = 0;
    __pyx_v_xo = 0;
    __pyx_v_yo = 0;
 1454: 
+1455:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1455, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1455, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_23);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_23, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1455, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1455, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1455, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_23 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1455, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_23); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 1455, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      if (!__pyx_t_21) break;
 1456: 
+1457:             gr2DValmax = 0
      __pyx_v_gr2DValmax = 0.0;
+1458:             for i in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
        __pyx_v_i = __pyx_t_26;
+1459:                 if a[i] == 1:
        __pyx_t_57 = __pyx_v_i;
        __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_21) {
/* … */
        }
      }
+1460:                     tmp = gr2DVal[i]
          __pyx_t_58 = __pyx_v_i;
          __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_gr2DVal.diminfo[0].strides));
+1461:                     if tmp > gr2DValmax:
          __pyx_t_21 = ((__pyx_v_tmp > __pyx_v_gr2DValmax) != 0);
          if (__pyx_t_21) {
/* … */
          }
+1462:                         gr2DValmax = tmp
            __pyx_v_gr2DValmax = __pyx_v_tmp;
 1463: 
+1464:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
        __pyx_v_k = __pyx_t_26;
+1465:                 if a[k] == 1:
        __pyx_t_59 = __pyx_v_k;
        __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_21) {
/* … */
        }
      }
+1466:                     xo = X[k]
          __pyx_t_60 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_X.diminfo[0].strides));
+1467:                     yo = Y[k]
          __pyx_t_61 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_Y.diminfo[0].strides));
+1468:                     Io = I[xo, yo]
          __pyx_t_62 = __pyx_v_xo;
          __pyx_t_63 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_I.diminfo[1].strides));
+1469:                     dr = gr2DVal[k] / gr2DValmax
          __pyx_t_64 = __pyx_v_k;
          __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_gr2DVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_gr2DValmax));
+1470:                     r[k] = r[k] + dr
          __pyx_t_65 = __pyx_v_k;
          __pyx_t_66 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_r.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_r.diminfo[0].strides)) + __pyx_v_dr);
+1471:                     rad = r[k]
          __pyx_t_67 = __pyx_v_k;
          __pyx_v_rad = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_r.diminfo[0].strides));
+1472:                     a[k] = 0
          __pyx_t_68 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+1473:                     rmax = math.ceil(rad)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1473, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1473, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = PyFloat_FromDouble(__pyx_v_rad); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1473, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_4 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_4)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_4);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_4) {
            __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1473, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_23);
          } else {
            __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1473, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_4); __pyx_t_4 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_25, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1473, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_69 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_23); if (unlikely((__pyx_t_69 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1473, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_v_rmax = __pyx_t_69;
+1474:                     red = col[k, 0]
          __pyx_t_69 = __pyx_v_k;
          __pyx_t_70 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_70, __pyx_pybuffernd_col.diminfo[1].strides));
+1475:                     green = col[k, 1]
          __pyx_t_71 = __pyx_v_k;
          __pyx_t_72 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_col.diminfo[1].strides));
+1476:                     blue = col[k, 2]
          __pyx_t_73 = __pyx_v_k;
          __pyx_t_74 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_col.diminfo[1].strides));
 1477: 
 1478:                     # OUTWARD                                   
+1479:                     for deli in range(rmax + 1):
          __pyx_t_75 = (__pyx_v_rmax + 1);
          for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_75; __pyx_t_76+=1) {
            __pyx_v_deli = __pyx_t_76;
+1480:                         for delj in range(rmax + 1):
            __pyx_t_77 = (__pyx_v_rmax + 1);
            for (__pyx_t_78 = 0; __pyx_t_78 < __pyx_t_77; __pyx_t_78+=1) {
              __pyx_v_delj = __pyx_t_78;
 1481: 
+1482:                             if deli + delj <= rad :
              __pyx_t_21 = (((__pyx_v_deli + __pyx_v_delj) <= __pyx_v_rad) != 0);
              if (__pyx_t_21) {
/* … */
              }
            }
          }
 1483: 
+1484:                                 i, j = xo + deli, yo + delj
                __pyx_t_79 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_80 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_79;
                __pyx_v_j = __pyx_t_80;
+1485:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_81 = (0 <= __pyx_v_i);
                if (__pyx_t_81) {
                  __pyx_t_81 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_81 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L30_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_81 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_81;
                __pyx_L30_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+1486:                                     if I[i, j] == 0:
                  __pyx_t_80 = __pyx_v_i;
                  __pyx_t_79 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_79, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+1487:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L33;
                    }
+1488:                                             PN = I[i - 1, j]
                      __pyx_t_83 = (__pyx_v_i - 1);
                      __pyx_t_84 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_84, __pyx_pybuffernd_I.diminfo[1].strides));
 1489:                                         else:
+1490:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L33:;
+1491:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L34;
                    }
+1492:                                             PE = I[i, j + 1]
                      __pyx_t_85 = __pyx_v_i;
                      __pyx_t_86 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides));
 1493:                                         else:
+1494:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L34:;
+1495:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L35;
                    }
+1496:                                             PW = I[i, j - 1]
                      __pyx_t_87 = __pyx_v_i;
                      __pyx_t_88 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_88, __pyx_pybuffernd_I.diminfo[1].strides));
 1497:                                         else:
+1498:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L35:;
+1499:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L36;
                    }
+1500:                                             PS = I[i + 1, j]
                      __pyx_t_89 = (__pyx_v_i + 1);
                      __pyx_t_90 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_90, __pyx_pybuffernd_I.diminfo[1].strides));
 1501:                                         else:
+1502:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L36:;
+1503:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_81 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L38_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L38_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L38_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_81;
                    __pyx_L38_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+1504:                                             I[i, j] = Io
                      __pyx_t_91 = __pyx_v_i;
                      __pyx_t_92 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_92, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1505:                                             Col[i, j, 2] = red
                      __pyx_t_93 = __pyx_v_i;
                      __pyx_t_94 = __pyx_v_j;
                      __pyx_t_95 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_95, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1506:                                             Col[i, j, 1] = green
                      __pyx_t_96 = __pyx_v_i;
                      __pyx_t_97 = __pyx_v_j;
                      __pyx_t_98 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_97, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1507:                                             Col[i, j, 0] = blue
                      __pyx_t_99 = __pyx_v_i;
                      __pyx_t_100 = __pyx_v_j;
                      __pyx_t_101 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_101, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1508:                                             a[k] = 1
                      __pyx_t_102 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1509: 
 1510: 
 1511: 
 1512: 
 1513: 
+1514:                                 i, j = xo - deli, yo + delj
                __pyx_t_103 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_104 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_103;
                __pyx_v_j = __pyx_t_104;
+1515:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_81 = (0 <= __pyx_v_i);
                if (__pyx_t_81) {
                  __pyx_t_81 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_81 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L43_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_81 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_81;
                __pyx_L43_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+1516:                                     if I[i, j] == 0:
                  __pyx_t_104 = __pyx_v_i;
                  __pyx_t_103 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_103, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+1517:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L46;
                    }
+1518:                                             PN = I[i - 1, j]
                      __pyx_t_105 = (__pyx_v_i - 1);
                      __pyx_t_106 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_I.diminfo[1].strides));
 1519:                                         else:
+1520:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L46:;
+1521:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L47;
                    }
+1522:                                             PE = I[i, j + 1]
                      __pyx_t_107 = __pyx_v_i;
                      __pyx_t_108 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_I.diminfo[1].strides));
 1523:                                         else:
+1524:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L47:;
+1525:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L48;
                    }
+1526:                                             PW = I[i, j - 1]
                      __pyx_t_109 = __pyx_v_i;
                      __pyx_t_110 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_I.diminfo[1].strides));
 1527:                                         else:
+1528:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L48:;
+1529:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L49;
                    }
+1530:                                             PS = I[i + 1, j]
                      __pyx_t_111 = (__pyx_v_i + 1);
                      __pyx_t_112 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_I.diminfo[1].strides));
 1531:                                         else:
+1532:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L49:;
+1533:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_81 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L51_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L51_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L51_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_81;
                    __pyx_L51_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+1534:                                             I[i, j] = Io
                      __pyx_t_113 = __pyx_v_i;
                      __pyx_t_114 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1535:                                             Col[i, j, 2] = red
                      __pyx_t_115 = __pyx_v_i;
                      __pyx_t_116 = __pyx_v_j;
                      __pyx_t_117 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1536:                                             Col[i, j, 1] = green
                      __pyx_t_118 = __pyx_v_i;
                      __pyx_t_119 = __pyx_v_j;
                      __pyx_t_120 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_119, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_120, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1537:                                             Col[i, j, 0] = blue
                      __pyx_t_121 = __pyx_v_i;
                      __pyx_t_122 = __pyx_v_j;
                      __pyx_t_123 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1538:                                             a[k] = 1
                      __pyx_t_124 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1539: 
 1540: 
 1541: 
 1542: 
 1543: 
+1544:                                 i, j = xo - deli, yo - delj
                __pyx_t_125 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_126 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_125;
                __pyx_v_j = __pyx_t_126;
+1545:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_81 = (0 <= __pyx_v_i);
                if (__pyx_t_81) {
                  __pyx_t_81 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_81 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L56_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_81 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_81;
                __pyx_L56_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+1546:                                     if I[i, j] == 0:
                  __pyx_t_126 = __pyx_v_i;
                  __pyx_t_125 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+1547:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L59;
                    }
+1548:                                             PN = I[i - 1, j]
                      __pyx_t_127 = (__pyx_v_i - 1);
                      __pyx_t_128 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_I.diminfo[1].strides));
 1549:                                         else:
+1550:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L59:;
+1551:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L60;
                    }
+1552:                                             PE = I[i, j + 1]
                      __pyx_t_129 = __pyx_v_i;
                      __pyx_t_130 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_I.diminfo[1].strides));
 1553:                                         else:
+1554:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L60:;
+1555:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L61;
                    }
+1556:                                             PW = I[i, j - 1]
                      __pyx_t_131 = __pyx_v_i;
                      __pyx_t_132 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_I.diminfo[1].strides));
 1557:                                         else:
+1558:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L61:;
+1559:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L62;
                    }
+1560:                                             PS = I[i + 1, j]
                      __pyx_t_133 = (__pyx_v_i + 1);
                      __pyx_t_134 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides));
 1561:                                         else:
+1562:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L62:;
+1563:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_81 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L64_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L64_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L64_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_81;
                    __pyx_L64_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+1564:                                             I[i, j] = Io
                      __pyx_t_135 = __pyx_v_i;
                      __pyx_t_136 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1565:                                             Col[i, j, 2] = red
                      __pyx_t_137 = __pyx_v_i;
                      __pyx_t_138 = __pyx_v_j;
                      __pyx_t_139 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1566:                                             Col[i, j, 1] = green
                      __pyx_t_140 = __pyx_v_i;
                      __pyx_t_141 = __pyx_v_j;
                      __pyx_t_142 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1567:                                             Col[i, j, 0] = blue
                      __pyx_t_143 = __pyx_v_i;
                      __pyx_t_144 = __pyx_v_j;
                      __pyx_t_145 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1568:                                             a[k] = 1
                      __pyx_t_146 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1569: 
 1570: 
 1571: 
 1572: 
+1573:                                 i, j = xo + deli, yo - delj
                __pyx_t_147 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_148 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_147;
                __pyx_v_j = __pyx_t_148;
+1574:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_81 = (0 <= __pyx_v_i);
                if (__pyx_t_81) {
                  __pyx_t_81 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_81 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L69_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_81 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_81;
                __pyx_L69_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+1575:                                     if I[i, j] == 0:
                  __pyx_t_148 = __pyx_v_i;
                  __pyx_t_147 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_147, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+1576:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L72;
                    }
+1577:                                             PN = I[i - 1, j]
                      __pyx_t_149 = (__pyx_v_i - 1);
                      __pyx_t_150 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_150, __pyx_pybuffernd_I.diminfo[1].strides));
 1578:                                         else:
+1579:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L72:;
+1580:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L73;
                    }
+1581:                                             PE = I[i, j + 1]
                      __pyx_t_151 = __pyx_v_i;
                      __pyx_t_152 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides));
 1582:                                         else:
+1583:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L73:;
+1584:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L74;
                    }
+1585:                                             PW = I[i, j - 1]
                      __pyx_t_153 = __pyx_v_i;
                      __pyx_t_154 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides));
 1586:                                         else:
+1587:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L74:;
+1588:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L75;
                    }
+1589:                                             PS = I[i + 1, j]
                      __pyx_t_155 = (__pyx_v_i + 1);
                      __pyx_t_156 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides));
 1590:                                         else:
+1591:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L75:;
+1592:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_81 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L77_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L77_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_81) {
                    } else {
                      __pyx_t_21 = __pyx_t_81;
                      goto __pyx_L77_bool_binop_done;
                    }
                    __pyx_t_81 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_81;
                    __pyx_L77_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+1593:                                             I[i, j] = Io
                      __pyx_t_157 = __pyx_v_i;
                      __pyx_t_158 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1594:                                             Col[i, j, 2] = red
                      __pyx_t_159 = __pyx_v_i;
                      __pyx_t_160 = __pyx_v_j;
                      __pyx_t_161 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1595:                                             Col[i, j, 1] = green
                      __pyx_t_162 = __pyx_v_i;
                      __pyx_t_163 = __pyx_v_j;
                      __pyx_t_164 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1596:                                             Col[i, j, 0] = blue
                      __pyx_t_165 = __pyx_v_i;
                      __pyx_t_166 = __pyx_v_j;
                      __pyx_t_167 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1597:                                             a[k] = 1
                      __pyx_t_168 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+1598:                     if a[k] == 0:
          __pyx_t_75 = __pyx_v_k;
          __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_21) {
/* … */
          }
+1599:                         win = rmax
            __pyx_v_win = __pyx_v_rmax;
+1600:                         xmin = max(0, xo - win)
            __pyx_t_76 = (__pyx_v_xo - __pyx_v_win);
            __pyx_t_169 = 0;
            if (((__pyx_t_76 > __pyx_t_169) != 0)) {
              __pyx_t_77 = __pyx_t_76;
            } else {
              __pyx_t_77 = __pyx_t_169;
            }
            __pyx_v_xmin = __pyx_t_77;
+1601:                         xmax = min(m - 1, xo + win)
            __pyx_t_77 = (__pyx_v_xo + __pyx_v_win);
            __pyx_t_76 = (__pyx_v_m - 1);
            if (((__pyx_t_77 < __pyx_t_76) != 0)) {
              __pyx_t_78 = __pyx_t_77;
            } else {
              __pyx_t_78 = __pyx_t_76;
            }
            __pyx_v_xmax = __pyx_t_78;
+1602:                         ymin = max(0, yo - win)
            __pyx_t_78 = (__pyx_v_yo - __pyx_v_win);
            __pyx_t_169 = 0;
            if (((__pyx_t_78 > __pyx_t_169) != 0)) {
              __pyx_t_77 = __pyx_t_78;
            } else {
              __pyx_t_77 = __pyx_t_169;
            }
            __pyx_v_ymin = __pyx_t_77;
+1603:                         ymax = min(n - 1, yo + win)
            __pyx_t_77 = (__pyx_v_yo + __pyx_v_win);
            __pyx_t_78 = (__pyx_v_n - 1);
            if (((__pyx_t_77 < __pyx_t_78) != 0)) {
              __pyx_t_76 = __pyx_t_77;
            } else {
              __pyx_t_76 = __pyx_t_78;
            }
            __pyx_v_ymax = __pyx_t_76;
+1604:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_76 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 1605: 
 1606: 
 1607: 
+1608:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+1609:             countim = countim + 1
      __pyx_v_countim = (__pyx_v_countim + 1);
    }
 1610: 
+1611:         if asy == 0:
    __pyx_t_21 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_21) {
/* … */
    }
+1612:             break
      goto __pyx_L12_break;
 1613:         else:
+1614:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_7 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1614, __pyx_L1_error)
      __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_all); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_25))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_25);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_25, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_25, __pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1614, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_23 = __Pyx_PyObject_CallNoArg(__pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1614, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      __pyx_t_25 = __Pyx_PyInt_EqObjC(__pyx_t_23, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_25); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 1614, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      if (__pyx_t_21) {
/* … */
      }
+1615:                 break
        goto __pyx_L12_break;
 1616:             else:
+1617:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1617, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+1618:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_zeros); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7);
        __pyx_t_25 = 0;
        __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1618, __pyx_L1_error)
        __pyx_t_8 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1618, __pyx_L1_error)
        }
        __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
+1619:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1619, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ones); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1619, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1619, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1619, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1619, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_int8); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1619, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_25) < 0) __PYX_ERR(0, 1619, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1619, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1619, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_25);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1619, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_25));
        __pyx_t_25 = 0;
+1620:                 r = np.zeros(p, dtype=np.float64)
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1620, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1620, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1620, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1620, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_25);
        __pyx_t_25 = 0;
        __pyx_t_25 = PyDict_New(); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1620, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1620, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1620, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (PyDict_SetItem(__pyx_t_25, __pyx_n_s_dtype, __pyx_t_23) < 0) __PYX_ERR(0, 1620, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, __pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1620, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1620, __pyx_L1_error)
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_23);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_v_r, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1620, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_r, ((PyArrayObject *)__pyx_t_23));
        __pyx_t_23 = 0;
+1621:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1621, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_centroids); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1621, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1621, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1621, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1621, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = NULL;
        __pyx_t_24 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_24 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(4+__pyx_t_24); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1621, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_24, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_24, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_24, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_24, __pyx_t_1);
        __pyx_t_25 = 0;
        __pyx_t_4 = 0;
        __pyx_t_1 = 0;
        __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1621, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_23))) || (PyList_CheckExact(__pyx_t_23))) {
          PyObject* sequence = __pyx_t_23;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 1621, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1621, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1621, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_1 = PyObject_GetIter(__pyx_t_23); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1621, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_22 = Py_TYPE(__pyx_t_1)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L84_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_5 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L84_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1621, __pyx_L1_error)
          __pyx_t_22 = NULL;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L85_unpacking_done;
          __pyx_L84_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_22 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 1621, __pyx_L1_error)
          __pyx_L85_unpacking_done:;
        }
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1621, __pyx_L1_error)
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1621, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1621, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1621, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+1622:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 1623: 
+1624:     toc = time.time()
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1624, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_23 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1624, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_23); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_v_toc = __pyx_t_20;
+1625:     obj.exetime = toc - tic
  __pyx_t_23 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_23) < 0) __PYX_ERR(0, 1625, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
+1626:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 1626, __pyx_L1_error)
+1627:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 1627, __pyx_L1_error)
+1628:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 1628, __pyx_L1_error)
+1629:     obj.gr2DVal = gr2DVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_gr2DVal, ((PyObject *)__pyx_v_gr2DVal)) < 0) __PYX_ERR(0, 1629, __pyx_L1_error)
+1630:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 1630, __pyx_L1_error)
+1631:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 1632: 
 1633: 
+1634: def Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_19Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_19Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D = {"Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_19Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_19Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_18Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_18Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_gr2D = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_win;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  PY_LONG_LONG __pyx_v_rmax;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_rad;
  float __pyx_v_dr;
  float __pyx_v_tmp;
  float __pyx_v_gr2DValmax;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_gr2DVal = 0;
  PyArrayObject *__pyx_v_r = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_gr2DVal;
  __Pyx_Buffer __pyx_pybuffer_gr2DVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_r;
  __Pyx_Buffer __pyx_pybuffer_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_gr2DVal.pybuffer.buf = NULL;
  __pyx_pybuffer_gr2DVal.refcount = 0;
  __pyx_pybuffernd_gr2DVal.data = NULL;
  __pyx_pybuffernd_gr2DVal.rcbuffer = &__pyx_pybuffer_gr2DVal;
  __pyx_pybuffer_r.pybuffer.buf = NULL;
  __pyx_pybuffer_r.refcount = 0;
  __pyx_pybuffernd_r.data = NULL;
  __pyx_pybuffernd_r.rcbuffer = &__pyx_pybuffer_r;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_25);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_gr2D);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_gr2DVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__29 = PyTuple_Pack(51, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_gr2D, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_k, __pyx_n_s_Io, __pyx_n_s_countim, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_rmax, __pyx_n_s_Iter, __pyx_n_s_rad, __pyx_n_s_dr, __pyx_n_s_tmp, __pyx_n_s_gr2DValmax, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_gr2DVal, __pyx_n_s_r, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__29);
  __Pyx_GIVEREF(__pyx_tuple__29);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_19Evolve_2D_Anisotropic_SiteSaturated_NeighbourHoodBased_N8_with_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_4, __pyx_t_2) < 0) __PYX_ERR(0, 1634, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 51, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_4, 1634, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 1634, __pyx_L1_error)
 1635:     # Grabbing data from the input object
+1636:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+1637:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1637, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+1638:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1638, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+1639:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1639, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+1640:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1640, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+1641:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1641, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+1642:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1642, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_3;
+1643:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1643, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_3;
+1644:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1644, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_3;
+1645:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+1646:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+1647:     gr2D = obj.gr2D
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_gr2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_gr2D = __pyx_t_1;
  __pyx_t_1 = 0;
 1648: 
 1649:     # Declaring other variables
 1650:     cdef double tic, toc
 1651:     cdef long long i, j, deli, delj, xo, yo, PN, PE, PW, PS , k, Io, countim, win, xmin, xmax, ymin, ymax, rmax, Iter
 1652:     cdef float rad, dr, tmp, gr2DValmax, red, green, blue
+1653:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1653, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1653, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1654:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1654, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1654, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+1655:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1655, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1655, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1655, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1656:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1656, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1656, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+1657:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1657, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1657, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1657, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1658:     cdef np.ndarray[np.float64_t, ndim = 1] gr2DVal = np.zeros(p, dtype=np.float64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1658, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1658, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_gr2DVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1658, __pyx_L1_error)
    } else {__pyx_pybuffernd_gr2DVal.diminfo[0].strides = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_gr2DVal.diminfo[0].shape = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_gr2DVal = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+1659:     cdef np.ndarray[np.float64_t, ndim = 1] r = np.zeros(p, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1659, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_r.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1659, __pyx_L1_error)
    } else {__pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_r = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1660:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1660, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1660, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+1661:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1661, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1661, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1661, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1662:     plantseed(myseed)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1662, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1662, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1662, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+1663:     col = np.random.random((p, 3))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1663, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1663, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1663, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1663, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1663, __pyx_L1_error)
  }
  __pyx_t_16 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_7));
  __pyx_t_7 = 0;
+1664:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1664, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1664, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1664, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_tic = __pyx_t_20;
 1665: 
+1666:     if pdelNxy == []:
  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1666, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 1666, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_21) {
/* … */
    goto __pyx_L3;
  }
+1667:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_4 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1667, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1667, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1667, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1667, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1667, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_22(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_5 = __pyx_t_22(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_6), 2) < 0) __PYX_ERR(0, 1667, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1667, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1667, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1667, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1667, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
    __pyx_t_7 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1667, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 1668:     else:
+1669:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1669, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1669, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1669, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1669, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1669, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_23 = NULL;
    __pyx_t_24 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_23)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_23);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_24 = 1;
      }
    }
    __pyx_t_25 = PyTuple_New(7+__pyx_t_24); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1669, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    if (__pyx_t_23) {
      __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_23); __pyx_t_23 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_24, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_24, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_24, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_24, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_24, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_25, 5+__pyx_t_24, __pyx_t_1);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_25, 6+__pyx_t_24, __pyx_int_1);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_25, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1669, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1669, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_25 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_25 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_25);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1669, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_25 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1669, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1669, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_25 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_25)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_25);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1669, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1669, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1669, __pyx_L1_error)
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1669, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1669, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
    __pyx_t_7 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1669, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
  }
  __pyx_L3:;
 1670: 
+1671:     if labelsorted == 1:
  __pyx_t_21 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_21) {
/* … */
  }
+1672:         X, Y = labelsort(n, X, Y)
    __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = NULL;
    __pyx_t_24 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_25);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_25, function);
        __pyx_t_24 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(3+__pyx_t_24); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_24, __pyx_t_7);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_24, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_24, ((PyObject *)__pyx_v_Y));
    __pyx_t_7 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 1672, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_25 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_25 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_25 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1672, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1672, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1672, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_25 = __pyx_t_22(__pyx_t_7); if (unlikely(!__pyx_t_25)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_25);
      index = 1; __pyx_t_6 = __pyx_t_22(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1672, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1672, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1672, __pyx_L1_error)
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1672, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1672, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1672, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;
 1673: 
 1674: 
+1675:     Iter = 1
  __pyx_v_Iter = 1;
+1676:     while True:
  while (1) {
+1677:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
      __pyx_v_k = __pyx_t_26;
+1678:             I[X[k], Y[k]] = k + 1
      __pyx_t_27 = __pyx_v_k;
      __pyx_t_28 = __pyx_v_k;
      __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_30 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+1679:             gr2DVal[k] = gr2D(X[k], Y[k], k + 1)
      __pyx_t_31 = __pyx_v_k;
      __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1679, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_32 = __pyx_v_k;
      __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1679, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1679, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_gr2D);
      __pyx_t_1 = __pyx_v_gr2D; __pyx_t_5 = NULL;
      __pyx_t_24 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_24 = 1;
        }
      }
      __pyx_t_23 = PyTuple_New(3+__pyx_t_24); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1679, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_24, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_25);
      PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_24, __pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_23, 2+__pyx_t_24, __pyx_t_7);
      __pyx_t_6 = 0;
      __pyx_t_25 = 0;
      __pyx_t_7 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_23, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1679, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_33 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_33 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 1679, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_34 = __pyx_v_k;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_gr2DVal.diminfo[0].strides) = __pyx_t_33;
+1680:             Col[X[k], Y[k], 2] = col[k, 0]
      __pyx_t_35 = __pyx_v_k;
      __pyx_t_36 = 0;
      __pyx_t_37 = __pyx_v_k;
      __pyx_t_38 = __pyx_v_k;
      __pyx_t_39 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_40 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_41 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_col.diminfo[1].strides));
+1681:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_42 = __pyx_v_k;
      __pyx_t_43 = 1;
      __pyx_t_44 = __pyx_v_k;
      __pyx_t_45 = __pyx_v_k;
      __pyx_t_46 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_47 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_48 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_col.diminfo[1].strides));
+1682:             Col[X[k], Y[k], 0] = col[k, 2]
      __pyx_t_49 = __pyx_v_k;
      __pyx_t_50 = 2;
      __pyx_t_51 = __pyx_v_k;
      __pyx_t_52 = __pyx_v_k;
      __pyx_t_53 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_54 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_55 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_54, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_55, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_col.diminfo[1].strides));
    }
 1683: 
+1684:         gr2DValmax = max(gr2DVal)
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_gr2DVal));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_gr2DVal));
    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_gr2DVal));
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_56 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_56 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1684, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_gr2DValmax = __pyx_t_56;
+1685:         countim = 0
    __pyx_v_countim = 0;
+1686:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+1687:         countim = 1
    __pyx_v_countim = 1;
+1688:         rmax = 0
    __pyx_v_rmax = 0;
+1689:         Io = 0; xo = 0; yo = 0;
    __pyx_v_Io = 0;
    __pyx_v_xo = 0;
    __pyx_v_yo = 0;
 1690: 
+1691:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1691, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1691, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_23);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_23, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1691, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1691, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1691, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_23 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1691, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_23); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 1691, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      if (!__pyx_t_21) break;
 1692: 
+1693:             gr2DValmax = 0
      __pyx_v_gr2DValmax = 0.0;
+1694:             for i in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
        __pyx_v_i = __pyx_t_26;
+1695:                 if a[i] == 1:
        __pyx_t_57 = __pyx_v_i;
        __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_21) {
/* … */
        }
      }
+1696:                     tmp = gr2DVal[i]
          __pyx_t_58 = __pyx_v_i;
          __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_gr2DVal.diminfo[0].strides));
+1697:                     if tmp > gr2DValmax:
          __pyx_t_21 = ((__pyx_v_tmp > __pyx_v_gr2DValmax) != 0);
          if (__pyx_t_21) {
/* … */
          }
+1698:                         gr2DValmax = tmp
            __pyx_v_gr2DValmax = __pyx_v_tmp;
 1699: 
+1700:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
        __pyx_v_k = __pyx_t_26;
+1701:                 if a[k] == 1:
        __pyx_t_59 = __pyx_v_k;
        __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_21) {
/* … */
        }
      }
+1702:                     xo = X[k]
          __pyx_t_60 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_X.diminfo[0].strides));
+1703:                     yo = Y[k]
          __pyx_t_61 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_Y.diminfo[0].strides));
+1704:                     Io = I[xo, yo]
          __pyx_t_62 = __pyx_v_xo;
          __pyx_t_63 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_I.diminfo[1].strides));
+1705:                     dr = gr2DVal[k] / gr2DValmax
          __pyx_t_64 = __pyx_v_k;
          __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_gr2DVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_gr2DValmax));
+1706:                     r[k] = r[k] + dr
          __pyx_t_65 = __pyx_v_k;
          __pyx_t_66 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_r.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_r.diminfo[0].strides)) + __pyx_v_dr);
+1707:                     rad = r[k]
          __pyx_t_67 = __pyx_v_k;
          __pyx_v_rad = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_r.diminfo[0].strides));
+1708:                     a[k] = 0
          __pyx_t_68 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+1709:                     rmax = math.ceil(rad)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1709, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = PyFloat_FromDouble(__pyx_v_rad); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_4 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_4)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_4);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_4) {
            __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1709, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_23);
          } else {
            __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1709, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_4); __pyx_t_4 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_25, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1709, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_69 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_23); if (unlikely((__pyx_t_69 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1709, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_v_rmax = __pyx_t_69;
+1710:                     red = col[k, 0]
          __pyx_t_69 = __pyx_v_k;
          __pyx_t_70 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_70, __pyx_pybuffernd_col.diminfo[1].strides));
+1711:                     green = col[k, 1]
          __pyx_t_71 = __pyx_v_k;
          __pyx_t_72 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_col.diminfo[1].strides));
+1712:                     blue = col[k, 2]
          __pyx_t_73 = __pyx_v_k;
          __pyx_t_74 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_col.diminfo[1].strides));
 1713: 
 1714:                     # OUTWARD                                   
+1715:                     for deli in range(rmax + 1):
          __pyx_t_75 = (__pyx_v_rmax + 1);
          for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_75; __pyx_t_76+=1) {
            __pyx_v_deli = __pyx_t_76;
+1716:                         for delj in range(rmax + 1):
            __pyx_t_77 = (__pyx_v_rmax + 1);
            for (__pyx_t_78 = 0; __pyx_t_78 < __pyx_t_77; __pyx_t_78+=1) {
              __pyx_v_delj = __pyx_t_78;
 1717: 
+1718:                             if deli <= rad and delj <= rad :
              __pyx_t_79 = ((__pyx_v_deli <= __pyx_v_rad) != 0);
              if (__pyx_t_79) {
              } else {
                __pyx_t_21 = __pyx_t_79;
                goto __pyx_L29_bool_binop_done;
              }
              __pyx_t_79 = ((__pyx_v_delj <= __pyx_v_rad) != 0);
              __pyx_t_21 = __pyx_t_79;
              __pyx_L29_bool_binop_done:;
              if (__pyx_t_21) {
/* … */
              }
            }
          }
 1719: 
+1720:                                 i, j = xo + deli, yo + delj
                __pyx_t_80 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_81 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_80;
                __pyx_v_j = __pyx_t_81;
+1721:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_79 = (0 <= __pyx_v_i);
                if (__pyx_t_79) {
                  __pyx_t_79 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_79 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L32_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_79 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_79;
                __pyx_L32_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+1722:                                     if I[i, j] == 0:
                  __pyx_t_81 = __pyx_v_i;
                  __pyx_t_80 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_80, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+1723:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L35;
                    }
+1724:                                             PN = I[i - 1, j]
                      __pyx_t_83 = (__pyx_v_i - 1);
                      __pyx_t_84 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_84, __pyx_pybuffernd_I.diminfo[1].strides));
 1725:                                         else:
+1726:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L35:;
+1727:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L36;
                    }
+1728:                                             PE = I[i, j + 1]
                      __pyx_t_85 = __pyx_v_i;
                      __pyx_t_86 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides));
 1729:                                         else:
+1730:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L36:;
+1731:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L37;
                    }
+1732:                                             PW = I[i, j - 1]
                      __pyx_t_87 = __pyx_v_i;
                      __pyx_t_88 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_88, __pyx_pybuffernd_I.diminfo[1].strides));
 1733:                                         else:
+1734:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L37:;
+1735:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L38;
                    }
+1736:                                             PS = I[i + 1, j]
                      __pyx_t_89 = (__pyx_v_i + 1);
                      __pyx_t_90 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_90, __pyx_pybuffernd_I.diminfo[1].strides));
 1737:                                         else:
+1738:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L38:;
+1739:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_79 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L40_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L40_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L40_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_79;
                    __pyx_L40_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+1740:                                             I[i, j] = Io
                      __pyx_t_91 = __pyx_v_i;
                      __pyx_t_92 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_92, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1741:                                             Col[i, j, 2] = red
                      __pyx_t_93 = __pyx_v_i;
                      __pyx_t_94 = __pyx_v_j;
                      __pyx_t_95 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_95, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1742:                                             Col[i, j, 1] = green
                      __pyx_t_96 = __pyx_v_i;
                      __pyx_t_97 = __pyx_v_j;
                      __pyx_t_98 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_97, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1743:                                             Col[i, j, 0] = blue
                      __pyx_t_99 = __pyx_v_i;
                      __pyx_t_100 = __pyx_v_j;
                      __pyx_t_101 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_101, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1744:                                             a[k] = 1
                      __pyx_t_102 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1745: 
 1746: 
 1747: 
 1748: 
 1749: 
+1750:                                 i, j = xo - deli, yo + delj
                __pyx_t_103 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_104 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_103;
                __pyx_v_j = __pyx_t_104;
+1751:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_79 = (0 <= __pyx_v_i);
                if (__pyx_t_79) {
                  __pyx_t_79 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_79 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L45_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_79 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_79;
                __pyx_L45_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+1752:                                     if I[i, j] == 0:
                  __pyx_t_104 = __pyx_v_i;
                  __pyx_t_103 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_103, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+1753:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L48;
                    }
+1754:                                             PN = I[i - 1, j]
                      __pyx_t_105 = (__pyx_v_i - 1);
                      __pyx_t_106 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_I.diminfo[1].strides));
 1755:                                         else:
+1756:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L48:;
+1757:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L49;
                    }
+1758:                                             PE = I[i, j + 1]
                      __pyx_t_107 = __pyx_v_i;
                      __pyx_t_108 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_I.diminfo[1].strides));
 1759:                                         else:
+1760:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L49:;
+1761:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L50;
                    }
+1762:                                             PW = I[i, j - 1]
                      __pyx_t_109 = __pyx_v_i;
                      __pyx_t_110 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_I.diminfo[1].strides));
 1763:                                         else:
+1764:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L50:;
+1765:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L51;
                    }
+1766:                                             PS = I[i + 1, j]
                      __pyx_t_111 = (__pyx_v_i + 1);
                      __pyx_t_112 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_I.diminfo[1].strides));
 1767:                                         else:
+1768:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L51:;
+1769:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_79 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L53_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L53_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L53_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_79;
                    __pyx_L53_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+1770:                                             I[i, j] = Io
                      __pyx_t_113 = __pyx_v_i;
                      __pyx_t_114 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1771:                                             Col[i, j, 2] = red
                      __pyx_t_115 = __pyx_v_i;
                      __pyx_t_116 = __pyx_v_j;
                      __pyx_t_117 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1772:                                             Col[i, j, 1] = green
                      __pyx_t_118 = __pyx_v_i;
                      __pyx_t_119 = __pyx_v_j;
                      __pyx_t_120 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_119, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_120, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1773:                                             Col[i, j, 0] = blue
                      __pyx_t_121 = __pyx_v_i;
                      __pyx_t_122 = __pyx_v_j;
                      __pyx_t_123 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1774:                                             a[k] = 1
                      __pyx_t_124 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1775: 
 1776: 
 1777: 
 1778: 
 1779: 
+1780:                                 i, j = xo - deli, yo - delj
                __pyx_t_125 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_126 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_125;
                __pyx_v_j = __pyx_t_126;
+1781:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_79 = (0 <= __pyx_v_i);
                if (__pyx_t_79) {
                  __pyx_t_79 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_79 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L58_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_79 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_79;
                __pyx_L58_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+1782:                                     if I[i, j] == 0:
                  __pyx_t_126 = __pyx_v_i;
                  __pyx_t_125 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+1783:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L61;
                    }
+1784:                                             PN = I[i - 1, j]
                      __pyx_t_127 = (__pyx_v_i - 1);
                      __pyx_t_128 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_I.diminfo[1].strides));
 1785:                                         else:
+1786:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L61:;
+1787:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L62;
                    }
+1788:                                             PE = I[i, j + 1]
                      __pyx_t_129 = __pyx_v_i;
                      __pyx_t_130 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_I.diminfo[1].strides));
 1789:                                         else:
+1790:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L62:;
+1791:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L63;
                    }
+1792:                                             PW = I[i, j - 1]
                      __pyx_t_131 = __pyx_v_i;
                      __pyx_t_132 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_I.diminfo[1].strides));
 1793:                                         else:
+1794:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L63:;
+1795:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L64;
                    }
+1796:                                             PS = I[i + 1, j]
                      __pyx_t_133 = (__pyx_v_i + 1);
                      __pyx_t_134 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides));
 1797:                                         else:
+1798:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L64:;
+1799:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_79 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L66_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L66_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L66_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_79;
                    __pyx_L66_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+1800:                                             I[i, j] = Io
                      __pyx_t_135 = __pyx_v_i;
                      __pyx_t_136 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1801:                                             Col[i, j, 2] = red
                      __pyx_t_137 = __pyx_v_i;
                      __pyx_t_138 = __pyx_v_j;
                      __pyx_t_139 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1802:                                             Col[i, j, 1] = green
                      __pyx_t_140 = __pyx_v_i;
                      __pyx_t_141 = __pyx_v_j;
                      __pyx_t_142 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1803:                                             Col[i, j, 0] = blue
                      __pyx_t_143 = __pyx_v_i;
                      __pyx_t_144 = __pyx_v_j;
                      __pyx_t_145 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1804:                                             a[k] = 1
                      __pyx_t_146 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1805: 
 1806: 
 1807: 
 1808: 
+1809:                                 i, j = xo + deli, yo - delj
                __pyx_t_147 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_148 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_147;
                __pyx_v_j = __pyx_t_148;
+1810:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_79 = (0 <= __pyx_v_i);
                if (__pyx_t_79) {
                  __pyx_t_79 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_82 = (__pyx_t_79 != 0);
                if (__pyx_t_82) {
                } else {
                  __pyx_t_21 = __pyx_t_82;
                  goto __pyx_L71_bool_binop_done;
                }
                __pyx_t_82 = (0 <= __pyx_v_j);
                if (__pyx_t_82) {
                  __pyx_t_82 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_79 = (__pyx_t_82 != 0);
                __pyx_t_21 = __pyx_t_79;
                __pyx_L71_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+1811:                                     if I[i, j] == 0:
                  __pyx_t_148 = __pyx_v_i;
                  __pyx_t_147 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_147, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+1812:                                         if i > 0:
                    __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L74;
                    }
+1813:                                             PN = I[i - 1, j]
                      __pyx_t_149 = (__pyx_v_i - 1);
                      __pyx_t_150 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_150, __pyx_pybuffernd_I.diminfo[1].strides));
 1814:                                         else:
+1815:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L74:;
+1816:                                         if j < n - 1:
                    __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L75;
                    }
+1817:                                             PE = I[i, j + 1]
                      __pyx_t_151 = __pyx_v_i;
                      __pyx_t_152 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides));
 1818:                                         else:
+1819:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L75:;
+1820:                                         if j > 0:
                    __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L76;
                    }
+1821:                                             PW = I[i, j - 1]
                      __pyx_t_153 = __pyx_v_i;
                      __pyx_t_154 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides));
 1822:                                         else:
+1823:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L76:;
+1824:                                         if i < m - 1:
                    __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_21) {
/* … */
                      goto __pyx_L77;
                    }
+1825:                                             PS = I[i + 1, j]
                      __pyx_t_155 = (__pyx_v_i + 1);
                      __pyx_t_156 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides));
 1826:                                         else:
+1827:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L77:;
+1828:                                         if PN == Io or PE == Io or PW == Io or PS == Io:
                    __pyx_t_79 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L79_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L79_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_79) {
                    } else {
                      __pyx_t_21 = __pyx_t_79;
                      goto __pyx_L79_bool_binop_done;
                    }
                    __pyx_t_79 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_21 = __pyx_t_79;
                    __pyx_L79_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
+1829:                                             I[i, j] = Io
                      __pyx_t_157 = __pyx_v_i;
                      __pyx_t_158 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1830:                                             Col[i, j, 2] = red
                      __pyx_t_159 = __pyx_v_i;
                      __pyx_t_160 = __pyx_v_j;
                      __pyx_t_161 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1831:                                             Col[i, j, 1] = green
                      __pyx_t_162 = __pyx_v_i;
                      __pyx_t_163 = __pyx_v_j;
                      __pyx_t_164 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1832:                                             Col[i, j, 0] = blue
                      __pyx_t_165 = __pyx_v_i;
                      __pyx_t_166 = __pyx_v_j;
                      __pyx_t_167 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1833:                                             a[k] = 1
                      __pyx_t_168 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+1834:                     if a[k] == 0:
          __pyx_t_75 = __pyx_v_k;
          __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_21) {
/* … */
          }
+1835:                         win = rmax
            __pyx_v_win = __pyx_v_rmax;
+1836:                         xmin = max(0, xo - win)
            __pyx_t_76 = (__pyx_v_xo - __pyx_v_win);
            __pyx_t_169 = 0;
            if (((__pyx_t_76 > __pyx_t_169) != 0)) {
              __pyx_t_77 = __pyx_t_76;
            } else {
              __pyx_t_77 = __pyx_t_169;
            }
            __pyx_v_xmin = __pyx_t_77;
+1837:                         xmax = min(m - 1, xo + win)
            __pyx_t_77 = (__pyx_v_xo + __pyx_v_win);
            __pyx_t_76 = (__pyx_v_m - 1);
            if (((__pyx_t_77 < __pyx_t_76) != 0)) {
              __pyx_t_78 = __pyx_t_77;
            } else {
              __pyx_t_78 = __pyx_t_76;
            }
            __pyx_v_xmax = __pyx_t_78;
+1838:                         ymin = max(0, yo - win)
            __pyx_t_78 = (__pyx_v_yo - __pyx_v_win);
            __pyx_t_169 = 0;
            if (((__pyx_t_78 > __pyx_t_169) != 0)) {
              __pyx_t_77 = __pyx_t_78;
            } else {
              __pyx_t_77 = __pyx_t_169;
            }
            __pyx_v_ymin = __pyx_t_77;
+1839:                         ymax = min(n - 1, yo + win)
            __pyx_t_77 = (__pyx_v_yo + __pyx_v_win);
            __pyx_t_78 = (__pyx_v_n - 1);
            if (((__pyx_t_77 < __pyx_t_78) != 0)) {
              __pyx_t_76 = __pyx_t_77;
            } else {
              __pyx_t_76 = __pyx_t_78;
            }
            __pyx_v_ymax = __pyx_t_76;
+1840:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_76 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 1841: 
 1842: 
 1843: 
+1844:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+1845:             countim = countim + 1
      __pyx_v_countim = (__pyx_v_countim + 1);
    }
+1846:         if asy == 0:
    __pyx_t_21 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_21) {
/* … */
    }
+1847:             break
      goto __pyx_L12_break;
 1848:         else:
+1849:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_7 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1849, __pyx_L1_error)
      __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_all); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1849, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_25))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_25);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_25, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_25, __pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1849, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_23 = __Pyx_PyObject_CallNoArg(__pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1849, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      __pyx_t_25 = __Pyx_PyInt_EqObjC(__pyx_t_23, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1849, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_25); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 1849, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      if (__pyx_t_21) {
/* … */
      }
+1850:                 break
        goto __pyx_L12_break;
 1851:             else:
+1852:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1852, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+1853:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_zeros); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7);
        __pyx_t_25 = 0;
        __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1853, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1853, __pyx_L1_error)
        __pyx_t_8 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1853, __pyx_L1_error)
        }
        __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
+1854:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1854, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ones); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1854, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1854, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1854, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1854, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1854, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_int8); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1854, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_25) < 0) __PYX_ERR(0, 1854, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1854, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1854, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_25);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1854, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_25));
        __pyx_t_25 = 0;
+1855:                 r = np.zeros(p, dtype=np.float64)
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1855, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1855, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1855, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1855, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_25);
        __pyx_t_25 = 0;
        __pyx_t_25 = PyDict_New(); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1855, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1855, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1855, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (PyDict_SetItem(__pyx_t_25, __pyx_n_s_dtype, __pyx_t_23) < 0) __PYX_ERR(0, 1855, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, __pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1855, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1855, __pyx_L1_error)
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_23);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_v_r, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1855, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_r, ((PyArrayObject *)__pyx_t_23));
        __pyx_t_23 = 0;
+1856:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1856, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_centroids); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1856, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1856, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1856, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1856, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = NULL;
        __pyx_t_24 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_24 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(4+__pyx_t_24); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1856, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_24, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_24, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_24, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_24, __pyx_t_1);
        __pyx_t_25 = 0;
        __pyx_t_4 = 0;
        __pyx_t_1 = 0;
        __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1856, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_23))) || (PyList_CheckExact(__pyx_t_23))) {
          PyObject* sequence = __pyx_t_23;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 1856, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1856, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1856, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_1 = PyObject_GetIter(__pyx_t_23); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1856, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_22 = Py_TYPE(__pyx_t_1)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L86_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_5 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L86_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1856, __pyx_L1_error)
          __pyx_t_22 = NULL;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L87_unpacking_done;
          __pyx_L86_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_22 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 1856, __pyx_L1_error)
          __pyx_L87_unpacking_done:;
        }
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1856, __pyx_L1_error)
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1856, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1856, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1856, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+1857:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 1858: 
+1859:     toc = time.time()
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1859, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_23 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1859, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_23); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1859, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_v_toc = __pyx_t_20;
+1860:     obj.exetime = toc - tic
  __pyx_t_23 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1860, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_23) < 0) __PYX_ERR(0, 1860, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
+1861:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 1861, __pyx_L1_error)
+1862:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 1862, __pyx_L1_error)
+1863:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 1863, __pyx_L1_error)
+1864:     obj.gr2DVal = gr2DVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_gr2DVal, ((PyObject *)__pyx_v_gr2DVal)) < 0) __PYX_ERR(0, 1864, __pyx_L1_error)
+1865:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 1865, __pyx_L1_error)
+1866:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 1867: 
 1868: 
+1869: def Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_21Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_21Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D = {"Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_21Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_21Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_20Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_20Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_rad;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_r = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_r;
  __Pyx_Buffer __pyx_pybuffer_r;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_r.pybuffer.buf = NULL;
  __pyx_pybuffer_r.refcount = 0;
  __pyx_pybuffernd_r.data = NULL;
  __pyx_pybuffernd_r.rcbuffer = &__pyx_pybuffer_r;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_48);
  __Pyx_XDECREF(__pyx_t_167);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__31 = PyTuple_Pack(54, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_rad, __pyx_n_s_countim, __pyx_n_s_w, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_Iter, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_dr, __pyx_n_s_tmp, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_r, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 1869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__31);
  __Pyx_GIVEREF(__pyx_tuple__31);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_21Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_without_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous, __pyx_t_2) < 0) __PYX_ERR(0, 1869, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 54, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous, 1869, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 1869, __pyx_L1_error)
 1870:     # Grabbing data from the input object
+1871:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1871, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+1872:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1872, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+1873:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1873, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1873, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+1874:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1874, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+1875:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1875, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1875, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+1876:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+1877:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1877, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+1878:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1878, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+1879:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+1880:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+1881:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+1882:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+1883:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
 1884: 
 1885:     # Declaring other variables
 1886:     cdef double tic, toc
 1887:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, dp, nnz, rad, countim, w, xt, yt, i, j, k, xo, yo, Iter
 1888:     cdef float dt, f, t, dr, tmp, red, green, blue
+1889:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1889, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1889, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+1890:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.zeros(MN, dtype=np.int8)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1890, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1890, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+1891:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1891, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1891, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+1892:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1892, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1892, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1893:     cdef np.ndarray[np.int64_t, ndim = 1] r = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1893, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_r.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1893, __pyx_L1_error)
    } else {__pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_r = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+1894:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1894, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1894, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1894, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1894, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+1895:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1895, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1895, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+1896:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1896, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1896, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+1897:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1897, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 1897, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+1898:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1898, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1898, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1899:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1899, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1899, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1899, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1899, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1899, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1899, __pyx_L1_error)
  }
  __pyx_t_17 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_5));
  __pyx_t_5 = 0;
+1900:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1900, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1900, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1900, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1900, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1900, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_tic = __pyx_t_21;
 1901: 
+1902:     t = 0
  __pyx_v_t = 0.0;
+1903:     p = 0
  __pyx_v_p = 0;
+1904:     dp = 0
  __pyx_v_dp = 0;
+1905:     countim = 0
  __pyx_v_countim = 0;
+1906:     nnz = 0
  __pyx_v_nnz = 0;
+1907:     Iter = 1
  __pyx_v_Iter = 1;
+1908:     while nnz < MN:
  while (1) {
    __pyx_t_22 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_22) break;
+1909:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+1910:         dt = 1.0 / Gt(t)
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1910, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_6 = __pyx_v_Gt; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1910, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1910, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1910, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_5, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1910, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1910, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_dt = __pyx_t_3;
+1911:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_6 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_8 = __pyx_v_Ndot; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1911, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_23 = PyTuple_New(1+1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1911, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_23, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_23, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1911, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1911, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1911, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_dp = __pyx_t_2;
+1912:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+1913:         if pdelNxy == []:
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1913, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1913, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_22 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_22 < 0)) __PYX_ERR(0, 1913, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_22) {
/* … */
      goto __pyx_L5;
    }
+1914:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
      __pyx_t_24 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_22 = __pyx_t_24;
      __pyx_L7_bool_binop_done:;
      if (__pyx_t_22) {
/* … */
      }
+1915:                 count = 0
        __pyx_v_count = 0;
+1916:                 while count < dp:
        while (1) {
          __pyx_t_22 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_22) break;
+1917:                     xt = np.random.randint(0, m - 1)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1917, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1917, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1917, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1917, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_23 = NULL;
          __pyx_t_25 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_23)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_23);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
              __pyx_t_25 = 1;
            }
          }
          __pyx_t_1 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1917, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          if (__pyx_t_23) {
            __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_23); __pyx_t_23 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_25, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_25, __pyx_t_8);
          __pyx_t_8 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1917, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1917, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_xt = __pyx_t_2;
+1918:                     yt = np.random.randint(0, n - 1)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1918, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1918, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1918, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1918, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = NULL;
          __pyx_t_25 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
              __pyx_t_25 = 1;
            }
          }
          __pyx_t_23 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1918, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_8); __pyx_t_8 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_25, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_25, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_23, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1918, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 1918, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_yt = __pyx_t_2;
+1919:                     if I[xt, yt] == 0:
          __pyx_t_2 = __pyx_v_xt;
          __pyx_t_26 = __pyx_v_yt;
          __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_26, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_22) {
/* … */
          }
        }
+1920:                         I[xt, yt] = p + count + 1
            __pyx_t_27 = __pyx_v_xt;
            __pyx_t_28 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+1921:                         X[p + count] = xt
            __pyx_t_29 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+1922:                         Y[p + count] = yt
            __pyx_t_30 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+1923:                         a[p + count] = 1
            __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+1924:                         r[p + count] = 1
            __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_r.diminfo[0].strides) = 1;
+1925:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_34 = 0;
            __pyx_t_35 = __pyx_v_xt;
            __pyx_t_36 = __pyx_v_yt;
            __pyx_t_37 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_37, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_col.diminfo[1].strides));
+1926:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_38 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_39 = 1;
            __pyx_t_40 = __pyx_v_xt;
            __pyx_t_41 = __pyx_v_yt;
            __pyx_t_42 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_39, __pyx_pybuffernd_col.diminfo[1].strides));
+1927:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_43 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_44 = 2;
            __pyx_t_45 = __pyx_v_xt;
            __pyx_t_46 = __pyx_v_yt;
            __pyx_t_47 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_col.diminfo[1].strides));
+1928:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+1929:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 1930:         else:
+1931:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
    /*else*/ {
      __pyx_t_24 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_22 = __pyx_t_24;
      __pyx_L14_bool_binop_done:;
      if (__pyx_t_22) {
/* … */
      }
    }
    __pyx_L5:;
+1932:                 xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1932, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1932, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1932, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1932, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1932, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = NULL;
        __pyx_t_25 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_23);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_23, function);
            __pyx_t_25 = 1;
          }
        }
        __pyx_t_48 = PyTuple_New(7+__pyx_t_25); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 1932, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_48);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_48, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_INCREF(__pyx_v_pdelNxy);
        __Pyx_GIVEREF(__pyx_v_pdelNxy);
        PyTuple_SET_ITEM(__pyx_t_48, 0+__pyx_t_25, __pyx_v_pdelNxy);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_48, 1+__pyx_t_25, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_48, 2+__pyx_t_25, __pyx_t_5);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_48, 3+__pyx_t_25, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_48, 4+__pyx_t_25, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_48, 5+__pyx_t_25, __pyx_t_8);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_48, 6+__pyx_t_25, __pyx_int_1);
        __pyx_t_5 = 0;
        __pyx_t_1 = 0;
        __pyx_t_8 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_48, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1932, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0;
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
          PyObject* sequence = __pyx_t_6;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 1932, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_48 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_48 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_48);
          #else
          __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1932, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __pyx_t_48 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 1932, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_48);
          #endif
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1932, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_49 = Py_TYPE(__pyx_t_8)->tp_iternext;
          index = 0; __pyx_t_23 = __pyx_t_49(__pyx_t_8); if (unlikely(!__pyx_t_23)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_23);
          index = 1; __pyx_t_48 = __pyx_t_49(__pyx_t_8); if (unlikely(!__pyx_t_48)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_48);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_49(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1932, __pyx_L1_error)
          __pyx_t_49 = NULL;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L18_unpacking_done;
          __pyx_L17_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_49 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 1932, __pyx_L1_error)
          __pyx_L18_unpacking_done:;
        }
        if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1932, __pyx_L1_error)
        if (!(likely(((__pyx_t_48) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_48, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1932, __pyx_L1_error)
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_23);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
            }
          }
          __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1932, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_23));
        __pyx_t_23 = 0;
        __pyx_t_15 = ((PyArrayObject *)__pyx_t_48);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
            }
          }
          __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1932, __pyx_L1_error)
        }
        __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_48));
        __pyx_t_48 = 0;
+1933:                 w = 0
        __pyx_v_w = 0;
+1934:                 count = 0
        __pyx_v_count = 0;
+1935:                 while count < dp:
        while (1) {
          __pyx_t_22 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_22) break;
+1936:                     xt = xtrial[w]
          __pyx_t_50 = __pyx_v_w;
          __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+1937:                     yt = ytrial[w]
          __pyx_t_51 = __pyx_v_w;
          __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+1938:                     if I[xt, yt] == 0:
          __pyx_t_52 = __pyx_v_xt;
          __pyx_t_53 = __pyx_v_yt;
          __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_53, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_22) {
/* … */
          }
+1939:                         I[xt, yt] = p + count + 1
            __pyx_t_54 = __pyx_v_xt;
            __pyx_t_55 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+1940:                         X[p + count] = xt
            __pyx_t_56 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+1941:                         Y[p + count] = yt
            __pyx_t_57 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+1942:                         a[p + count] = 1
            __pyx_t_58 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+1943:                         r[p + count] = 1
            __pyx_t_59 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_r.diminfo[0].strides) = 1;
+1944:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_61 = 0;
            __pyx_t_62 = __pyx_v_xt;
            __pyx_t_63 = __pyx_v_yt;
            __pyx_t_64 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_64, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_61, __pyx_pybuffernd_col.diminfo[1].strides));
+1945:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_65 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_66 = 1;
            __pyx_t_67 = __pyx_v_xt;
            __pyx_t_68 = __pyx_v_yt;
            __pyx_t_69 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_69, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_col.diminfo[1].strides));
+1946:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_70 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_71 = 2;
            __pyx_t_72 = __pyx_v_xt;
            __pyx_t_73 = __pyx_v_yt;
            __pyx_t_74 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_74, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_col.diminfo[1].strides));
+1947:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+1948:                     if w < dp - 1:
          __pyx_t_22 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
          if (__pyx_t_22) {
/* … */
            goto __pyx_L22;
          }
+1949:                         w = w + 1
            __pyx_v_w = (__pyx_v_w + 1);
 1950:                     else:
+1951:                         xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          /*else*/ {
            __pyx_t_48 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 1951, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_48);
            __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_48, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1951, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0;
            __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 1951, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_48);
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1951, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1951, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = NULL;
            __pyx_t_25 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_23);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_23, function);
                __pyx_t_25 = 1;
              }
            }
            __pyx_t_7 = PyTuple_New(7+__pyx_t_25); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1951, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_INCREF(__pyx_v_pdelNxy);
            __Pyx_GIVEREF(__pyx_v_pdelNxy);
            PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_25, __pyx_v_pdelNxy);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_25, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_48);
            PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_25, __pyx_t_48);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_25, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_25, __pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_25, __pyx_t_1);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_25, __pyx_int_1);
            __pyx_t_48 = 0;
            __pyx_t_8 = 0;
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1951, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
            if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
              PyObject* sequence = __pyx_t_6;
              #if CYTHON_COMPILING_IN_CPYTHON
              Py_ssize_t size = Py_SIZE(sequence);
              #else
              Py_ssize_t size = PySequence_Size(sequence);
              #endif
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(0, 1951, __pyx_L1_error)
              }
              #if CYTHON_COMPILING_IN_CPYTHON
              if (likely(PyTuple_CheckExact(sequence))) {
                __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
                __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
              } else {
                __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
                __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
              }
              __Pyx_INCREF(__pyx_t_23);
              __Pyx_INCREF(__pyx_t_7);
              #else
              __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 1951, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_23);
              __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1951, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              #endif
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            } else {
              Py_ssize_t index = -1;
              __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1951, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_49 = Py_TYPE(__pyx_t_1)->tp_iternext;
              index = 0; __pyx_t_23 = __pyx_t_49(__pyx_t_1); if (unlikely(!__pyx_t_23)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_23);
              index = 1; __pyx_t_7 = __pyx_t_49(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_7);
              if (__Pyx_IternextUnpackEndCheck(__pyx_t_49(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1951, __pyx_L1_error)
              __pyx_t_49 = NULL;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              goto __pyx_L24_unpacking_done;
              __pyx_L23_unpacking_failed:;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_49 = NULL;
              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
              __PYX_ERR(0, 1951, __pyx_L1_error)
              __pyx_L24_unpacking_done:;
            }
            if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1951, __pyx_L1_error)
            if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1951, __pyx_L1_error)
            __pyx_t_14 = ((PyArrayObject *)__pyx_t_23);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                }
              }
              __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1951, __pyx_L1_error)
            }
            __pyx_t_14 = 0;
            __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_23));
            __pyx_t_23 = 0;
            __pyx_t_15 = ((PyArrayObject *)__pyx_t_7);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                }
              }
              __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1951, __pyx_L1_error)
            }
            __pyx_t_15 = 0;
            __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_7));
            __pyx_t_7 = 0;
+1952:                         w = 0
            __pyx_v_w = 0;
          }
          __pyx_L22:;
        }
+1953:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 1954: 
+1955:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+1956:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 1957: 
+1958:         for k in range(0, p):
    __pyx_t_75 = __pyx_v_p;
    for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_75; __pyx_t_76+=1) {
      __pyx_v_k = __pyx_t_76;
+1959:             if a[k] == 1:
      __pyx_t_77 = __pyx_v_k;
      __pyx_t_22 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_22) {
/* … */
      }
    }
+1960:                 a[k] = 0
        __pyx_t_78 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+1961:                 xo = X[k]
        __pyx_t_79 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_79, __pyx_pybuffernd_X.diminfo[0].strides));
+1962:                 yo = Y[k]
        __pyx_t_80 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_Y.diminfo[0].strides));
+1963:                 Io = I[xo, yo]
        __pyx_t_81 = __pyx_v_xo;
        __pyx_t_82 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_82, __pyx_pybuffernd_I.diminfo[1].strides));
+1964:                 rad = r[k]
        __pyx_t_83 = __pyx_v_k;
        __pyx_v_rad = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_r.diminfo[0].strides));
+1965:                 red = col[k, 0]
        __pyx_t_84 = __pyx_v_k;
        __pyx_t_85 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_85, __pyx_pybuffernd_col.diminfo[1].strides));
+1966:                 green = col[k, 1]
        __pyx_t_86 = __pyx_v_k;
        __pyx_t_87 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_87, __pyx_pybuffernd_col.diminfo[1].strides));
+1967:                 blue = col[k, 2]
        __pyx_t_88 = __pyx_v_k;
        __pyx_t_89 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_col.diminfo[1].strides));
 1968: 
+1969:                 for deli in range(rad + 1):
        __pyx_t_90 = (__pyx_v_rad + 1);
        for (__pyx_t_91 = 0; __pyx_t_91 < __pyx_t_90; __pyx_t_91+=1) {
          __pyx_v_deli = __pyx_t_91;
+1970:                     for delj in range(rad + 1):
          __pyx_t_92 = (__pyx_v_rad + 1);
          for (__pyx_t_93 = 0; __pyx_t_93 < __pyx_t_92; __pyx_t_93+=1) {
            __pyx_v_delj = __pyx_t_93;
+1971:                         if deli + delj <= rad:
            __pyx_t_22 = (((__pyx_v_deli + __pyx_v_delj) <= __pyx_v_rad) != 0);
            if (__pyx_t_22) {
/* … */
            }
          }
        }
+1972:                             i, j = xo + deli, yo + delj
              __pyx_t_94 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_95 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_94;
              __pyx_v_j = __pyx_t_95;
+1973:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L34_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L34_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+1974:                                 if I[i, j] == 0:
                __pyx_t_95 = __pyx_v_i;
                __pyx_t_94 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+1975:                                     if i > 0:
                  __pyx_t_22 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L37;
                  }
+1976:                                         PN = I[i - 1, j]
                    __pyx_t_97 = (__pyx_v_i - 1);
                    __pyx_t_98 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_98, __pyx_pybuffernd_I.diminfo[1].strides));
 1977:                                     else:
+1978:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L37:;
+1979:                                     if j > 0:
                  __pyx_t_22 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L38;
                  }
+1980:                                         PW = I[i, j - 1]
                    __pyx_t_99 = __pyx_v_i;
                    __pyx_t_100 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_100, __pyx_pybuffernd_I.diminfo[1].strides));
 1981:                                     else:
+1982:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L38:;
+1983:                                     if PN == Io or PW == Io:
                  __pyx_t_24 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L40_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L40_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+1984:                                         I[i, j] = Io
                    __pyx_t_101 = __pyx_v_i;
                    __pyx_t_102 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+1985:                                         Col[i, j, 2] = red
                    __pyx_t_103 = __pyx_v_i;
                    __pyx_t_104 = __pyx_v_j;
                    __pyx_t_105 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_104, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_105, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+1986:                                         Col[i, j, 1] = green
                    __pyx_t_106 = __pyx_v_i;
                    __pyx_t_107 = __pyx_v_j;
                    __pyx_t_108 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_108, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+1987:                                         Col[i, j, 0] = blue
                    __pyx_t_109 = __pyx_v_i;
                    __pyx_t_110 = __pyx_v_j;
                    __pyx_t_111 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+1988:                                         a[k] = 1
                    __pyx_t_112 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 1989: 
+1990:                             i, j = xo - deli, yo + delj
              __pyx_t_113 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_114 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_113;
              __pyx_v_j = __pyx_t_114;
+1991:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L43_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L43_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+1992:                                 if I[i, j] == 0:
                __pyx_t_114 = __pyx_v_i;
                __pyx_t_113 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+1993:                                     if i < m - 1:
                  __pyx_t_22 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L46;
                  }
+1994:                                         PS = I[i + 1, j]
                    __pyx_t_115 = (__pyx_v_i + 1);
                    __pyx_t_116 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_I.diminfo[1].strides));
 1995:                                     else:
+1996:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L46:;
+1997:                                     if j > 0:
                  __pyx_t_22 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L47;
                  }
+1998:                                         PW = I[i, j - 1]
                    __pyx_t_117 = __pyx_v_i;
                    __pyx_t_118 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_I.diminfo[1].strides));
 1999:                                     else:
+2000:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L47:;
+2001:                                     if PW == Io or PS == Io:
                  __pyx_t_24 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L49_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L49_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+2002:                                         I[i, j] = Io
                    __pyx_t_119 = __pyx_v_i;
                    __pyx_t_120 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2003:                                         Col[i, j, 2] = red
                    __pyx_t_121 = __pyx_v_i;
                    __pyx_t_122 = __pyx_v_j;
                    __pyx_t_123 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2004:                                         Col[i, j, 1] = green
                    __pyx_t_124 = __pyx_v_i;
                    __pyx_t_125 = __pyx_v_j;
                    __pyx_t_126 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2005:                                         Col[i, j, 0] = blue
                    __pyx_t_127 = __pyx_v_i;
                    __pyx_t_128 = __pyx_v_j;
                    __pyx_t_129 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2006:                                         a[k] = 1
                    __pyx_t_130 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2007: 
+2008:                             i, j = xo - deli, yo - delj
              __pyx_t_131 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_132 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_131;
              __pyx_v_j = __pyx_t_132;
+2009:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L52_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L52_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+2010:                                 if I[i, j] == 0:
                __pyx_t_132 = __pyx_v_i;
                __pyx_t_131 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_131, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+2011:                                     if i < m - 1:
                  __pyx_t_22 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L55;
                  }
+2012:                                         PS = I[i + 1, j]
                    __pyx_t_133 = (__pyx_v_i + 1);
                    __pyx_t_134 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides));
 2013:                                     else:
+2014:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L55:;
+2015:                                     if j < n - 1:
                  __pyx_t_22 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L56;
                  }
+2016:                                         PE = I[i, j + 1]
                    __pyx_t_135 = __pyx_v_i;
                    __pyx_t_136 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides));
 2017:                                     else:
+2018:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L56:;
+2019:                                     if PE == Io or PS == Io:
                  __pyx_t_24 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L58_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L58_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+2020:                                         I[i, j] = Io
                    __pyx_t_137 = __pyx_v_i;
                    __pyx_t_138 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2021:                                         Col[i, j, 2] = red
                    __pyx_t_139 = __pyx_v_i;
                    __pyx_t_140 = __pyx_v_j;
                    __pyx_t_141 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2022:                                         Col[i, j, 1] = green
                    __pyx_t_142 = __pyx_v_i;
                    __pyx_t_143 = __pyx_v_j;
                    __pyx_t_144 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2023:                                         Col[i, j, 0] = blue
                    __pyx_t_145 = __pyx_v_i;
                    __pyx_t_146 = __pyx_v_j;
                    __pyx_t_147 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2024:                                         a[k] = 1
                    __pyx_t_148 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2025: 
+2026:                             i, j = xo + deli, yo - delj
              __pyx_t_149 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_150 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_149;
              __pyx_v_j = __pyx_t_150;
+2027:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L61_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L61_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+2028:                                 if I[i, j] == 0:
                __pyx_t_150 = __pyx_v_i;
                __pyx_t_149 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_149, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+2029:                                     if i > 0:
                  __pyx_t_22 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L64;
                  }
+2030:                                         PN = I[i - 1, j]
                    __pyx_t_151 = (__pyx_v_i - 1);
                    __pyx_t_152 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides));
 2031:                                     else:
+2032:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L64:;
+2033:                                     if j < n - 1:
                  __pyx_t_22 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L65;
                  }
+2034:                                         PE = I[i, j + 1]
                    __pyx_t_153 = __pyx_v_i;
                    __pyx_t_154 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides));
 2035:                                     else:
+2036:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L65:;
+2037:                                     if PN == Io or PE == Io:
                  __pyx_t_24 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L67_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L67_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+2038:                                         I[i, j] = Io
                    __pyx_t_155 = __pyx_v_i;
                    __pyx_t_156 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2039:                                         Col[i, j, 2] = red
                    __pyx_t_157 = __pyx_v_i;
                    __pyx_t_158 = __pyx_v_j;
                    __pyx_t_159 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2040:                                         Col[i, j, 1] = green
                    __pyx_t_160 = __pyx_v_i;
                    __pyx_t_161 = __pyx_v_j;
                    __pyx_t_162 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2041:                                         Col[i, j, 0] = blue
                    __pyx_t_163 = __pyx_v_i;
                    __pyx_t_164 = __pyx_v_j;
                    __pyx_t_165 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2042:                                         a[k] = 1
                    __pyx_t_166 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_166, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2043: 
+2044:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+2045:         for i in range(p):
    __pyx_t_75 = __pyx_v_p;
    for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_75; __pyx_t_76+=1) {
      __pyx_v_i = __pyx_t_76;
+2046:             r[i] = r[i] + 1
      __pyx_t_90 = __pyx_v_i;
      __pyx_t_91 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_r.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_r.diminfo[0].strides)) + 1);
    }
+2047:         nnz = cv2.countNonZero(I)
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2047, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2047, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_23);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_23, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2047, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2047, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2047, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    __pyx_t_75 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_75 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2047, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_nnz = __pyx_t_75;
  }
 2048: 
+2049:     obj.p = p
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_6) < 0) __PYX_ERR(0, 2049, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2050:     toc = time.time()
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2050, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2050, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_23 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_23) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_23); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2050, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  } else {
    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2050, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2050, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_toc = __pyx_t_21;
+2051:     obj.exetime = toc - tic
  __pyx_t_6 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_6) < 0) __PYX_ERR(0, 2051, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2052:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_delete); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_arange); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_48);
  __pyx_t_5 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_167 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_167)) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_167);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_167, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_167, 0+__pyx_t_25, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_48);
  PyTuple_SET_ITEM(__pyx_t_167, 1+__pyx_t_25, __pyx_t_48);
  __pyx_t_7 = 0;
  __pyx_t_48 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_167, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_167); __pyx_t_167 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_23);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_23, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_167 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_167)) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_167);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_167, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_167, 0+__pyx_t_25, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_167, 1+__pyx_t_25, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_167, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_167); __pyx_t_167 = 0;
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_6) < 0) __PYX_ERR(0, 2052, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2053:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_167 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_delete); if (unlikely(!__pyx_t_167)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_167);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_arange); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_48);
  __pyx_t_7 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_25, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_48);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_25, __pyx_t_48);
  __pyx_t_1 = 0;
  __pyx_t_48 = 0;
  __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_167))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_167);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_167);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_167, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_25, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_23);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_25, __pyx_t_23);
  __pyx_t_23 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_167, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_167); __pyx_t_167 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_6) < 0) __PYX_ERR(0, 2053, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2054:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 2054, __pyx_L1_error)
+2055:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 2055, __pyx_L1_error)
+2056:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 2057: 
 2058: 
+2059: def Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_23Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_23Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D = {"Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_23Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_23Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_22Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_22Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_rad;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_r = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_r;
  __Pyx_Buffer __pyx_pybuffer_r;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_r.pybuffer.buf = NULL;
  __pyx_pybuffer_r.refcount = 0;
  __pyx_pybuffernd_r.data = NULL;
  __pyx_pybuffernd_r.rcbuffer = &__pyx_pybuffer_r;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_48);
  __Pyx_XDECREF(__pyx_t_167);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__33 = PyTuple_Pack(54, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_rad, __pyx_n_s_countim, __pyx_n_s_w, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_Iter, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_dr, __pyx_n_s_tmp, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_r, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 2059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__33);
  __Pyx_GIVEREF(__pyx_tuple__33);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_23Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_without_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_2, __pyx_t_2) < 0) __PYX_ERR(0, 2059, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 54, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_2, 2059, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 2059, __pyx_L1_error)
 2060:     # Grabbing data from the input object
+2061:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2061, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+2062:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2062, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+2063:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2063, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+2064:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2064, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+2065:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2065, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+2066:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+2067:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+2068:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2068, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+2069:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+2070:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+2071:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+2072:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+2073:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
 2074: 
 2075:     # Declaring other variables
 2076:     cdef double tic, toc
 2077:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, dp, nnz, rad, countim, w, xt, yt, i, j, k, xo, yo, Iter
 2078:     cdef float dt, f, t, dr, tmp, red, green, blue
+2079:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2079, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2079, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2080:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.zeros(MN, dtype=np.int8)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2080, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2080, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2081:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2081, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2081, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2081, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+2082:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2082, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2082, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2082, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2083:     cdef np.ndarray[np.int64_t, ndim = 1] r = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2083, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_r.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2083, __pyx_L1_error)
    } else {__pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_r = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2084:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2084, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2084, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2084, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2085:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2085, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2085, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+2086:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2086, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2086, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2087:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2087, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2087, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+2088:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2088, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2089:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2089, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2089, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2089, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2089, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2089, __pyx_L1_error)
  }
  __pyx_t_17 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_5));
  __pyx_t_5 = 0;
+2090:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2090, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2090, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2090, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_tic = __pyx_t_21;
 2091: 
 2092: 
+2093:     t = 0
  __pyx_v_t = 0.0;
+2094:     p = 0
  __pyx_v_p = 0;
+2095:     dp = 0
  __pyx_v_dp = 0;
+2096:     countim = 0
  __pyx_v_countim = 0;
+2097:     nnz = 0
  __pyx_v_nnz = 0;
 2098: 
+2099:     Iter = 1
  __pyx_v_Iter = 1;
+2100:     while nnz < MN:
  while (1) {
    __pyx_t_22 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_22) break;
+2101:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+2102:         dt = 1.0 / Gt(t)
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_6 = __pyx_v_Gt; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2102, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2102, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2102, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_5, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2102, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_dt = __pyx_t_3;
+2103:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_6 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_8 = __pyx_v_Ndot; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2103, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_23 = PyTuple_New(1+1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2103, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_23, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_23, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2103, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_dp = __pyx_t_2;
+2104:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+2105:         if pdelNxy == []:
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2105, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_22 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_22 < 0)) __PYX_ERR(0, 2105, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_22) {
/* … */
      goto __pyx_L5;
    }
+2106:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
      __pyx_t_24 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_22 = __pyx_t_24;
      __pyx_L7_bool_binop_done:;
      if (__pyx_t_22) {
/* … */
      }
+2107:                 count = 0
        __pyx_v_count = 0;
+2108:                 while count < dp:
        while (1) {
          __pyx_t_22 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_22) break;
+2109:                     xt = np.random.randint(0, m - 1)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2109, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2109, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2109, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2109, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_23 = NULL;
          __pyx_t_25 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_23)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_23);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
              __pyx_t_25 = 1;
            }
          }
          __pyx_t_1 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2109, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          if (__pyx_t_23) {
            __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_23); __pyx_t_23 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_25, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_25, __pyx_t_8);
          __pyx_t_8 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2109, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2109, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_xt = __pyx_t_2;
+2110:                     yt = np.random.randint(0, n - 1)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2110, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2110, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2110, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2110, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = NULL;
          __pyx_t_25 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
              __pyx_t_25 = 1;
            }
          }
          __pyx_t_23 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2110, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_8); __pyx_t_8 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_25, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_25, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_23, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2110, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2110, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_yt = __pyx_t_2;
+2111:                     if I[xt, yt] == 0:
          __pyx_t_2 = __pyx_v_xt;
          __pyx_t_26 = __pyx_v_yt;
          __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_26, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_22) {
/* … */
          }
        }
+2112:                         I[xt, yt] = p + count + 1
            __pyx_t_27 = __pyx_v_xt;
            __pyx_t_28 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+2113:                         X[p + count] = xt
            __pyx_t_29 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+2114:                         Y[p + count] = yt
            __pyx_t_30 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+2115:                         a[p + count] = 1
            __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+2116:                         r[p + count] = 1
            __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_r.diminfo[0].strides) = 1;
+2117:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_34 = 0;
            __pyx_t_35 = __pyx_v_xt;
            __pyx_t_36 = __pyx_v_yt;
            __pyx_t_37 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_37, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_col.diminfo[1].strides));
+2118:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_38 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_39 = 1;
            __pyx_t_40 = __pyx_v_xt;
            __pyx_t_41 = __pyx_v_yt;
            __pyx_t_42 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_39, __pyx_pybuffernd_col.diminfo[1].strides));
+2119:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_43 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_44 = 2;
            __pyx_t_45 = __pyx_v_xt;
            __pyx_t_46 = __pyx_v_yt;
            __pyx_t_47 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_col.diminfo[1].strides));
+2120:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+2121:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 2122:         else:
+2123:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
    /*else*/ {
      __pyx_t_24 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_22 = __pyx_t_24;
      __pyx_L14_bool_binop_done:;
      if (__pyx_t_22) {
/* … */
      }
    }
    __pyx_L5:;
+2124:                 xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = NULL;
        __pyx_t_25 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_23);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_23, function);
            __pyx_t_25 = 1;
          }
        }
        __pyx_t_48 = PyTuple_New(7+__pyx_t_25); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 2124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_48);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_48, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_INCREF(__pyx_v_pdelNxy);
        __Pyx_GIVEREF(__pyx_v_pdelNxy);
        PyTuple_SET_ITEM(__pyx_t_48, 0+__pyx_t_25, __pyx_v_pdelNxy);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_48, 1+__pyx_t_25, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_48, 2+__pyx_t_25, __pyx_t_5);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_48, 3+__pyx_t_25, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_48, 4+__pyx_t_25, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_48, 5+__pyx_t_25, __pyx_t_8);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_48, 6+__pyx_t_25, __pyx_int_1);
        __pyx_t_5 = 0;
        __pyx_t_1 = 0;
        __pyx_t_8 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_48, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0;
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
          PyObject* sequence = __pyx_t_6;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 2124, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_48 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_48 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_48);
          #else
          __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2124, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __pyx_t_48 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 2124, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_48);
          #endif
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2124, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_49 = Py_TYPE(__pyx_t_8)->tp_iternext;
          index = 0; __pyx_t_23 = __pyx_t_49(__pyx_t_8); if (unlikely(!__pyx_t_23)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_23);
          index = 1; __pyx_t_48 = __pyx_t_49(__pyx_t_8); if (unlikely(!__pyx_t_48)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_48);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_49(__pyx_t_8), 2) < 0) __PYX_ERR(0, 2124, __pyx_L1_error)
          __pyx_t_49 = NULL;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L18_unpacking_done;
          __pyx_L17_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_49 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 2124, __pyx_L1_error)
          __pyx_L18_unpacking_done:;
        }
        if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2124, __pyx_L1_error)
        if (!(likely(((__pyx_t_48) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_48, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2124, __pyx_L1_error)
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_23);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
            }
          }
          __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2124, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_23));
        __pyx_t_23 = 0;
        __pyx_t_15 = ((PyArrayObject *)__pyx_t_48);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
            }
          }
          __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2124, __pyx_L1_error)
        }
        __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_48));
        __pyx_t_48 = 0;
+2125:                 w = 0
        __pyx_v_w = 0;
+2126:                 count = 0
        __pyx_v_count = 0;
+2127:                 while count < dp:
        while (1) {
          __pyx_t_22 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_22) break;
+2128:                     xt = xtrial[w]
          __pyx_t_50 = __pyx_v_w;
          __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+2129:                     yt = ytrial[w]
          __pyx_t_51 = __pyx_v_w;
          __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+2130:                     if I[xt, yt] == 0:
          __pyx_t_52 = __pyx_v_xt;
          __pyx_t_53 = __pyx_v_yt;
          __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_53, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_22) {
/* … */
          }
+2131:                         I[xt, yt] = p + count + 1
            __pyx_t_54 = __pyx_v_xt;
            __pyx_t_55 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+2132:                         X[p + count] = xt
            __pyx_t_56 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+2133:                         Y[p + count] = yt
            __pyx_t_57 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+2134:                         a[p + count] = 1
            __pyx_t_58 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+2135:                         r[p + count] = 1
            __pyx_t_59 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_r.diminfo[0].strides) = 1;
+2136:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_61 = 0;
            __pyx_t_62 = __pyx_v_xt;
            __pyx_t_63 = __pyx_v_yt;
            __pyx_t_64 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_64, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_61, __pyx_pybuffernd_col.diminfo[1].strides));
+2137:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_65 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_66 = 1;
            __pyx_t_67 = __pyx_v_xt;
            __pyx_t_68 = __pyx_v_yt;
            __pyx_t_69 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_69, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_col.diminfo[1].strides));
+2138:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_70 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_71 = 2;
            __pyx_t_72 = __pyx_v_xt;
            __pyx_t_73 = __pyx_v_yt;
            __pyx_t_74 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_74, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_col.diminfo[1].strides));
+2139:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+2140:                     if w < dp - 1:
          __pyx_t_22 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
          if (__pyx_t_22) {
/* … */
            goto __pyx_L22;
          }
+2141:                         w = w + 1
            __pyx_v_w = (__pyx_v_w + 1);
 2142:                     else:
+2143:                         xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          /*else*/ {
            __pyx_t_48 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 2143, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_48);
            __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_48, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2143, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0;
            __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 2143, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_48);
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2143, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2143, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = NULL;
            __pyx_t_25 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_23);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_23, function);
                __pyx_t_25 = 1;
              }
            }
            __pyx_t_7 = PyTuple_New(7+__pyx_t_25); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2143, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_INCREF(__pyx_v_pdelNxy);
            __Pyx_GIVEREF(__pyx_v_pdelNxy);
            PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_25, __pyx_v_pdelNxy);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_25, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_48);
            PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_25, __pyx_t_48);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_25, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_25, __pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_25, __pyx_t_1);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_25, __pyx_int_1);
            __pyx_t_48 = 0;
            __pyx_t_8 = 0;
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2143, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
            if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
              PyObject* sequence = __pyx_t_6;
              #if CYTHON_COMPILING_IN_CPYTHON
              Py_ssize_t size = Py_SIZE(sequence);
              #else
              Py_ssize_t size = PySequence_Size(sequence);
              #endif
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(0, 2143, __pyx_L1_error)
              }
              #if CYTHON_COMPILING_IN_CPYTHON
              if (likely(PyTuple_CheckExact(sequence))) {
                __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
                __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
              } else {
                __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
                __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
              }
              __Pyx_INCREF(__pyx_t_23);
              __Pyx_INCREF(__pyx_t_7);
              #else
              __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2143, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_23);
              __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2143, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              #endif
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            } else {
              Py_ssize_t index = -1;
              __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2143, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_49 = Py_TYPE(__pyx_t_1)->tp_iternext;
              index = 0; __pyx_t_23 = __pyx_t_49(__pyx_t_1); if (unlikely(!__pyx_t_23)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_23);
              index = 1; __pyx_t_7 = __pyx_t_49(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_7);
              if (__Pyx_IternextUnpackEndCheck(__pyx_t_49(__pyx_t_1), 2) < 0) __PYX_ERR(0, 2143, __pyx_L1_error)
              __pyx_t_49 = NULL;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              goto __pyx_L24_unpacking_done;
              __pyx_L23_unpacking_failed:;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_49 = NULL;
              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
              __PYX_ERR(0, 2143, __pyx_L1_error)
              __pyx_L24_unpacking_done:;
            }
            if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2143, __pyx_L1_error)
            if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2143, __pyx_L1_error)
            __pyx_t_14 = ((PyArrayObject *)__pyx_t_23);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                }
              }
              __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2143, __pyx_L1_error)
            }
            __pyx_t_14 = 0;
            __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_23));
            __pyx_t_23 = 0;
            __pyx_t_15 = ((PyArrayObject *)__pyx_t_7);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                }
              }
              __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2143, __pyx_L1_error)
            }
            __pyx_t_15 = 0;
            __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_7));
            __pyx_t_7 = 0;
+2144:                         w = 0
            __pyx_v_w = 0;
          }
          __pyx_L22:;
        }
+2145:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 2146: 
+2147:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+2148:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 2149: 
+2150:         for k in range(0, p):
    __pyx_t_75 = __pyx_v_p;
    for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_75; __pyx_t_76+=1) {
      __pyx_v_k = __pyx_t_76;
+2151:             if a[k] == 1:
      __pyx_t_77 = __pyx_v_k;
      __pyx_t_22 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_22) {
/* … */
      }
    }
+2152:                 a[k] = 0
        __pyx_t_78 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+2153:                 xo = X[k]
        __pyx_t_79 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_79, __pyx_pybuffernd_X.diminfo[0].strides));
+2154:                 yo = Y[k]
        __pyx_t_80 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_Y.diminfo[0].strides));
+2155:                 Io = I[xo, yo]
        __pyx_t_81 = __pyx_v_xo;
        __pyx_t_82 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_82, __pyx_pybuffernd_I.diminfo[1].strides));
+2156:                 rad = r[k]
        __pyx_t_83 = __pyx_v_k;
        __pyx_v_rad = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_r.diminfo[0].strides));
+2157:                 red = col[k, 0]
        __pyx_t_84 = __pyx_v_k;
        __pyx_t_85 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_85, __pyx_pybuffernd_col.diminfo[1].strides));
+2158:                 green = col[k, 1]
        __pyx_t_86 = __pyx_v_k;
        __pyx_t_87 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_87, __pyx_pybuffernd_col.diminfo[1].strides));
+2159:                 blue = col[k, 2]
        __pyx_t_88 = __pyx_v_k;
        __pyx_t_89 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_col.diminfo[1].strides));
 2160: 
+2161:                 for deli in range(rad + 1):
        __pyx_t_90 = (__pyx_v_rad + 1);
        for (__pyx_t_91 = 0; __pyx_t_91 < __pyx_t_90; __pyx_t_91+=1) {
          __pyx_v_deli = __pyx_t_91;
+2162:                     for delj in range(rad + 1):
          __pyx_t_92 = (__pyx_v_rad + 1);
          for (__pyx_t_93 = 0; __pyx_t_93 < __pyx_t_92; __pyx_t_93+=1) {
            __pyx_v_delj = __pyx_t_93;
+2163:                         if deli <= rad and delj <= rad:
            __pyx_t_24 = ((__pyx_v_deli <= __pyx_v_rad) != 0);
            if (__pyx_t_24) {
            } else {
              __pyx_t_22 = __pyx_t_24;
              goto __pyx_L33_bool_binop_done;
            }
            __pyx_t_24 = ((__pyx_v_delj <= __pyx_v_rad) != 0);
            __pyx_t_22 = __pyx_t_24;
            __pyx_L33_bool_binop_done:;
            if (__pyx_t_22) {
/* … */
            }
          }
        }
+2164:                             i, j = xo + deli, yo + delj
              __pyx_t_94 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_95 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_94;
              __pyx_v_j = __pyx_t_95;
+2165:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L36_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L36_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+2166:                                 if I[i, j] == 0:
                __pyx_t_95 = __pyx_v_i;
                __pyx_t_94 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+2167:                                     if i > 0:
                  __pyx_t_22 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L39;
                  }
+2168:                                         PN = I[i - 1, j]
                    __pyx_t_97 = (__pyx_v_i - 1);
                    __pyx_t_98 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_98, __pyx_pybuffernd_I.diminfo[1].strides));
 2169:                                     else:
+2170:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L39:;
+2171:                                     if j > 0:
                  __pyx_t_22 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L40;
                  }
+2172:                                         PW = I[i, j - 1]
                    __pyx_t_99 = __pyx_v_i;
                    __pyx_t_100 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_100, __pyx_pybuffernd_I.diminfo[1].strides));
 2173:                                     else:
+2174:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L40:;
+2175:                                     if PN == Io or PW == Io:
                  __pyx_t_24 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L42_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L42_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+2176:                                         I[i, j] = Io
                    __pyx_t_101 = __pyx_v_i;
                    __pyx_t_102 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2177:                                         Col[i, j, 2] = red
                    __pyx_t_103 = __pyx_v_i;
                    __pyx_t_104 = __pyx_v_j;
                    __pyx_t_105 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_104, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_105, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2178:                                         Col[i, j, 1] = green
                    __pyx_t_106 = __pyx_v_i;
                    __pyx_t_107 = __pyx_v_j;
                    __pyx_t_108 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_108, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2179:                                         Col[i, j, 0] = blue
                    __pyx_t_109 = __pyx_v_i;
                    __pyx_t_110 = __pyx_v_j;
                    __pyx_t_111 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2180:                                         a[k] = 1
                    __pyx_t_112 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2181: 
+2182:                             i, j = xo - deli, yo + delj
              __pyx_t_113 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_114 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_113;
              __pyx_v_j = __pyx_t_114;
+2183:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L45_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L45_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+2184:                                 if I[i, j] == 0:
                __pyx_t_114 = __pyx_v_i;
                __pyx_t_113 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+2185:                                     if i < m - 1:
                  __pyx_t_22 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L48;
                  }
+2186:                                         PS = I[i + 1, j]
                    __pyx_t_115 = (__pyx_v_i + 1);
                    __pyx_t_116 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_I.diminfo[1].strides));
 2187:                                     else:
+2188:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L48:;
+2189:                                     if j > 0:
                  __pyx_t_22 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L49;
                  }
+2190:                                         PW = I[i, j - 1]
                    __pyx_t_117 = __pyx_v_i;
                    __pyx_t_118 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_I.diminfo[1].strides));
 2191:                                     else:
+2192:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L49:;
+2193:                                     if PW == Io or PS == Io:
                  __pyx_t_24 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L51_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L51_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+2194:                                         I[i, j] = Io
                    __pyx_t_119 = __pyx_v_i;
                    __pyx_t_120 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2195:                                         Col[i, j, 2] = red
                    __pyx_t_121 = __pyx_v_i;
                    __pyx_t_122 = __pyx_v_j;
                    __pyx_t_123 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2196:                                         Col[i, j, 1] = green
                    __pyx_t_124 = __pyx_v_i;
                    __pyx_t_125 = __pyx_v_j;
                    __pyx_t_126 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2197:                                         Col[i, j, 0] = blue
                    __pyx_t_127 = __pyx_v_i;
                    __pyx_t_128 = __pyx_v_j;
                    __pyx_t_129 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2198:                                         a[k] = 1
                    __pyx_t_130 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2199: 
+2200:                             i, j = xo - deli, yo - delj
              __pyx_t_131 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_132 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_131;
              __pyx_v_j = __pyx_t_132;
+2201:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L54_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L54_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+2202:                                 if I[i, j] == 0:
                __pyx_t_132 = __pyx_v_i;
                __pyx_t_131 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_131, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+2203:                                     if i < m - 1:
                  __pyx_t_22 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L57;
                  }
+2204:                                         PS = I[i + 1, j]
                    __pyx_t_133 = (__pyx_v_i + 1);
                    __pyx_t_134 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides));
 2205:                                     else:
+2206:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L57:;
+2207:                                     if j < n - 1:
                  __pyx_t_22 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L58;
                  }
+2208:                                         PE = I[i, j + 1]
                    __pyx_t_135 = __pyx_v_i;
                    __pyx_t_136 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides));
 2209:                                     else:
+2210:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L58:;
+2211:                                     if PE == Io or PS == Io:
                  __pyx_t_24 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L60_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L60_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+2212:                                         I[i, j] = Io
                    __pyx_t_137 = __pyx_v_i;
                    __pyx_t_138 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2213:                                         Col[i, j, 2] = red
                    __pyx_t_139 = __pyx_v_i;
                    __pyx_t_140 = __pyx_v_j;
                    __pyx_t_141 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2214:                                         Col[i, j, 1] = green
                    __pyx_t_142 = __pyx_v_i;
                    __pyx_t_143 = __pyx_v_j;
                    __pyx_t_144 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2215:                                         Col[i, j, 0] = blue
                    __pyx_t_145 = __pyx_v_i;
                    __pyx_t_146 = __pyx_v_j;
                    __pyx_t_147 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2216:                                         a[k] = 1
                    __pyx_t_148 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2217: 
+2218:                             i, j = xo + deli, yo - delj
              __pyx_t_149 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_150 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_149;
              __pyx_v_j = __pyx_t_150;
+2219:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L63_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L63_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+2220:                                 if I[i, j] == 0:
                __pyx_t_150 = __pyx_v_i;
                __pyx_t_149 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_149, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+2221:                                     if i > 0:
                  __pyx_t_22 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L66;
                  }
+2222:                                         PN = I[i - 1, j]
                    __pyx_t_151 = (__pyx_v_i - 1);
                    __pyx_t_152 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides));
 2223:                                     else:
+2224:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L66:;
+2225:                                     if j < n - 1:
                  __pyx_t_22 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L67;
                  }
+2226:                                         PE = I[i, j + 1]
                    __pyx_t_153 = __pyx_v_i;
                    __pyx_t_154 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides));
 2227:                                     else:
+2228:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L67:;
+2229:                                     if PN == Io or PE == Io:
                  __pyx_t_24 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L69_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L69_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+2230:                                         I[i, j] = Io
                    __pyx_t_155 = __pyx_v_i;
                    __pyx_t_156 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2231:                                         Col[i, j, 2] = red
                    __pyx_t_157 = __pyx_v_i;
                    __pyx_t_158 = __pyx_v_j;
                    __pyx_t_159 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2232:                                         Col[i, j, 1] = green
                    __pyx_t_160 = __pyx_v_i;
                    __pyx_t_161 = __pyx_v_j;
                    __pyx_t_162 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2233:                                         Col[i, j, 0] = blue
                    __pyx_t_163 = __pyx_v_i;
                    __pyx_t_164 = __pyx_v_j;
                    __pyx_t_165 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2234:                                         a[k] = 1
                    __pyx_t_166 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_166, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2235: 
+2236:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+2237:         for i in range(p):
    __pyx_t_75 = __pyx_v_p;
    for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_75; __pyx_t_76+=1) {
      __pyx_v_i = __pyx_t_76;
+2238:             r[i] = r[i] + 1
      __pyx_t_90 = __pyx_v_i;
      __pyx_t_91 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_r.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_r.diminfo[0].strides)) + 1);
    }
+2239:         nnz = cv2.countNonZero(I)
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_23);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_23, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2239, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2239, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2239, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    __pyx_t_75 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_75 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2239, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_nnz = __pyx_t_75;
  }
 2240: 
+2241:     obj.p = p
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_6) < 0) __PYX_ERR(0, 2241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2242:     toc = time.time()
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_23 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_23)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_23) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_23); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2242, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  } else {
    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2242, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2242, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_toc = __pyx_t_21;
+2243:     obj.exetime = toc - tic
  __pyx_t_6 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_6) < 0) __PYX_ERR(0, 2243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2244:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_delete); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_arange); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_48);
  __pyx_t_5 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_167 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_167)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_167);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_167, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_167, 0+__pyx_t_25, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_48);
  PyTuple_SET_ITEM(__pyx_t_167, 1+__pyx_t_25, __pyx_t_48);
  __pyx_t_7 = 0;
  __pyx_t_48 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_167, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_167); __pyx_t_167 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_23);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_23, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_167 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_167)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_167);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_167, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_167, 0+__pyx_t_25, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_167, 1+__pyx_t_25, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_167, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_167); __pyx_t_167 = 0;
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_6) < 0) __PYX_ERR(0, 2244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2245:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_167 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_delete); if (unlikely(!__pyx_t_167)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_167);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_arange); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_48);
  __pyx_t_7 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_25, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_48);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_25, __pyx_t_48);
  __pyx_t_1 = 0;
  __pyx_t_48 = 0;
  __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_167))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_167);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_167);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_167, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_25, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_23);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_25, __pyx_t_23);
  __pyx_t_23 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_167, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_167); __pyx_t_167 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_6) < 0) __PYX_ERR(0, 2245, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2246:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 2246, __pyx_L1_error)
+2247:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 2247, __pyx_L1_error)
+2248:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 2249: 
 2250: 
+2251: def Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_25Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_25Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D = {"Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_25Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_25Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_24Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_24Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  PyObject *__pyx_v_gr2D = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_rmax;
  PY_LONG_LONG __pyx_v_win;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_gr2DValmax;
  float __pyx_v_dr;
  float __pyx_v_rad;
  float __pyx_v_tmp;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_r = 0;
  PyArrayObject *__pyx_v_gr2DVal = 0;
  CYTHON_UNUSED PyArrayObject *__pyx_v_rold = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_gr2DVal;
  __Pyx_Buffer __pyx_pybuffer_gr2DVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_r;
  __Pyx_Buffer __pyx_pybuffer_r;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_rold;
  __Pyx_Buffer __pyx_pybuffer_rold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_r.pybuffer.buf = NULL;
  __pyx_pybuffer_r.refcount = 0;
  __pyx_pybuffernd_r.data = NULL;
  __pyx_pybuffernd_r.rcbuffer = &__pyx_pybuffer_r;
  __pyx_pybuffer_gr2DVal.pybuffer.buf = NULL;
  __pyx_pybuffer_gr2DVal.refcount = 0;
  __pyx_pybuffernd_gr2DVal.data = NULL;
  __pyx_pybuffernd_gr2DVal.rcbuffer = &__pyx_pybuffer_gr2DVal;
  __pyx_pybuffer_rold.pybuffer.buf = NULL;
  __pyx_pybuffer_rold.refcount = 0;
  __pyx_pybuffernd_rold.data = NULL;
  __pyx_pybuffernd_rold.rcbuffer = &__pyx_pybuffer_rold;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_34);
  __Pyx_XDECREF(__pyx_t_192);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF(__pyx_v_gr2D);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XDECREF((PyObject *)__pyx_v_gr2DVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_rold);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__35 = PyTuple_Pack(64, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_gr2D, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_countim, __pyx_n_s_rmax, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_w, __pyx_n_s_Iter, __pyx_n_s_gr2DValmax, __pyx_n_s_dr, __pyx_n_s_rad, __pyx_n_s_tmp, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_r, __pyx_n_s_gr2DVal, __pyx_n_s_rold, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 2251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__35);
  __Pyx_GIVEREF(__pyx_tuple__35);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_25Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N4_with_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_3, __pyx_t_2) < 0) __PYX_ERR(0, 2251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 64, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_3, 2251, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 2251, __pyx_L1_error)
 2252: 
 2253:     # Grabbing data from the input object
+2254:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2254, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+2255:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+2256:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2256, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+2257:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2257, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+2258:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+2259:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+2260:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2260, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+2261:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2261, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+2262:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+2263:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+2264:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+2265:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+2266:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
+2267:     gr2D = obj.gr2D
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_gr2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_gr2D = __pyx_t_1;
  __pyx_t_1 = 0;
 2268: 
 2269:     # Declaring other variables
 2270:     cdef double tic, toc
 2271:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, xt, yt, dp, nnz, countim, rmax, win, xmin, xmax, ymin, ymax, i, j, k, xo, yo, w, Iter
 2272:     cdef float gr2DValmax, dr, rad, tmp, dt, f, t, red, green, blue
+2273:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2273, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2273, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2274:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.zeros(MN, dtype=np.int8)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2274, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2274, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2275:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2275, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2275, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+2276:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2276, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2276, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2277:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2277, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2277, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2277, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2278:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2278, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2278, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2279:     cdef np.ndarray[np.float64_t, ndim = 1] r = np.zeros(MN, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2279, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2279, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_r.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2279, __pyx_L1_error)
    } else {__pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_r = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+2280:     cdef np.ndarray[np.float64_t, ndim = 1] gr2DVal = np.zeros(MN, dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2280, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_gr2DVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2280, __pyx_L1_error)
    } else {__pyx_pybuffernd_gr2DVal.diminfo[0].strides = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_gr2DVal.diminfo[0].shape = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_gr2DVal = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2281:     cdef np.ndarray[np.float64_t, ndim = 1] rold = np.zeros(MN, dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2281, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_rold.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_rold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_rold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2281, __pyx_L1_error)
    } else {__pyx_pybuffernd_rold.diminfo[0].strides = __pyx_pybuffernd_rold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_rold.diminfo[0].shape = __pyx_pybuffernd_rold.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_rold = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2282:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2282, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2282, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2283:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2283, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2283, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_19 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2284:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2284, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2285:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2285, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2285, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2285, __pyx_L1_error)
  }
  __pyx_t_19 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_8));
  __pyx_t_8 = 0;
+2286:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2286, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2286, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_tic = __pyx_t_23;
 2287: 
 2288: 
 2289: 
+2290:     t = 0
  __pyx_v_t = 0.0;
+2291:     p = 0
  __pyx_v_p = 0;
+2292:     dp = 0
  __pyx_v_dp = 0;
+2293:     countim = 0
  __pyx_v_countim = 0;
+2294:     nnz = cv2.countNonZero(I)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_INCREF(((PyObject *)__pyx_v_I));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_I));
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_8); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2294, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_nnz = __pyx_t_2;
+2295:     Iter = 1
  __pyx_v_Iter = 1;
+2296:     while nnz < MN:
  while (1) {
    __pyx_t_24 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_24) break;
+2297:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+2298:         dt = 1.0 / Gt(t)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_1 = __pyx_v_Gt; __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2298, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_8, 1.0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2298, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_dt = __pyx_t_3;
+2299:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_1 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_6 = __pyx_v_Ndot; __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2299, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2299, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_25, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2299, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = PyNumber_Multiply(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_8); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2299, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_v_dp = __pyx_t_2;
+2300:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+2301:         if pdelNxy == []:
    __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2301, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_24 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_24 < 0)) __PYX_ERR(0, 2301, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_24) {
/* … */
      goto __pyx_L5;
    }
+2302:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
      __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_24 = __pyx_t_26;
      __pyx_L7_bool_binop_done:;
      if (__pyx_t_24) {
/* … */
      }
+2303:                 count = 0
        __pyx_v_count = 0;
+2304:                 while count < dp:
        while (1) {
          __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_24) break;
+2305:                     xt = np.random.randint(0, m - 1)
          __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2305, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2305, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_randint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2305, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2305, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_25 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_25)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_25);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_7 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2305, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (__pyx_t_25) {
            __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_25); __pyx_t_25 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_27, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2305, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2305, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_v_xt = __pyx_t_2;
+2306:                     yt = np.random.randint(0, n - 1)
          __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2306, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2306, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_randint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2306, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2306, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_6 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2306, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          if (__pyx_t_6) {
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_6); __pyx_t_6 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_7);
          __pyx_t_7 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2306, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2306, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_v_yt = __pyx_t_2;
+2307:                     if I[xt, yt] == 0:
          __pyx_t_2 = __pyx_v_xt;
          __pyx_t_28 = __pyx_v_yt;
          __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_24) {
/* … */
          }
        }
+2308:                         I[xt, yt] = p + count + 1
            __pyx_t_29 = __pyx_v_xt;
            __pyx_t_30 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+2309:                         X[p + count] = xt
            __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+2310:                         Y[p + count] = yt
            __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+2311:                         a[p + count] = 1
            __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+2312:                         gr2DVal[p + count] = gr2D(xt, yt, p + count + 1)
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2312, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2312, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2312, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_v_gr2D);
            __pyx_t_6 = __pyx_v_gr2D; __pyx_t_5 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_6, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_34 = PyTuple_New(3+__pyx_t_27); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2312, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_34, 0+__pyx_t_27, __pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_34, 1+__pyx_t_27, __pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_34, 2+__pyx_t_27, __pyx_t_7);
            __pyx_t_8 = 0;
            __pyx_t_25 = 0;
            __pyx_t_7 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2312, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 2312, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_36 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_gr2DVal.diminfo[0].strides) = __pyx_t_35;
+2313:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_37 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_38 = 0;
            __pyx_t_39 = __pyx_v_xt;
            __pyx_t_40 = __pyx_v_yt;
            __pyx_t_41 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_col.diminfo[1].strides));
+2314:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_42 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_43 = 1;
            __pyx_t_44 = __pyx_v_xt;
            __pyx_t_45 = __pyx_v_yt;
            __pyx_t_46 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_col.diminfo[1].strides));
+2315:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_47 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_48 = 2;
            __pyx_t_49 = __pyx_v_xt;
            __pyx_t_50 = __pyx_v_yt;
            __pyx_t_51 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_col.diminfo[1].strides));
+2316:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+2317:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 2318:         else:
+2319:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
    /*else*/ {
      __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_24 = __pyx_t_26;
      __pyx_L14_bool_binop_done:;
      if (__pyx_t_24) {
/* … */
      }
    }
    __pyx_L5:;
+2320:                 xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2320, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2320, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_34);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2320, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2320, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2320, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_8 = NULL;
        __pyx_t_27 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_34);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_34, function);
            __pyx_t_27 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2320, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_INCREF(__pyx_v_pdelNxy);
        __Pyx_GIVEREF(__pyx_v_pdelNxy);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_v_pdelNxy);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_27, __pyx_t_6);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_27, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_27, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_27, __pyx_t_25);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_27, __pyx_int_1);
        __pyx_t_6 = 0;
        __pyx_t_7 = 0;
        __pyx_t_25 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2320, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
          PyObject* sequence = __pyx_t_1;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 2320, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_34 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_34 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_34);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_34 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2320, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_34);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2320, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_25 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2320, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_52 = Py_TYPE(__pyx_t_25)->tp_iternext;
          index = 0; __pyx_t_34 = __pyx_t_52(__pyx_t_25); if (unlikely(!__pyx_t_34)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_34);
          index = 1; __pyx_t_5 = __pyx_t_52(__pyx_t_25); if (unlikely(!__pyx_t_5)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_52(__pyx_t_25), 2) < 0) __PYX_ERR(0, 2320, __pyx_L1_error)
          __pyx_t_52 = NULL;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          goto __pyx_L18_unpacking_done;
          __pyx_L17_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_52 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 2320, __pyx_L1_error)
          __pyx_L18_unpacking_done:;
        }
        if (!(likely(((__pyx_t_34) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_34, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2320, __pyx_L1_error)
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2320, __pyx_L1_error)
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_34);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
            }
          }
          __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2320, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_34));
        __pyx_t_34 = 0;
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
          }
          __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2320, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+2321:                 w = 0
        __pyx_v_w = 0;
+2322:                 count = 0
        __pyx_v_count = 0;
+2323:                 while count < dp:
        while (1) {
          __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_24) break;
+2324:                     xt = xtrial[w]
          __pyx_t_53 = __pyx_v_w;
          __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+2325:                     yt = ytrial[w]
          __pyx_t_54 = __pyx_v_w;
          __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+2326:                     if I[xt, yt] == 0:
          __pyx_t_55 = __pyx_v_xt;
          __pyx_t_56 = __pyx_v_yt;
          __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_56, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_24) {
/* … */
          }
+2327:                         I[xt, yt] = p + count + 1
            __pyx_t_57 = __pyx_v_xt;
            __pyx_t_58 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_58, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+2328:                         X[p + count] = xt
            __pyx_t_59 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+2329:                         Y[p + count] = yt
            __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+2330:                         a[p + count] = 1
            __pyx_t_61 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+2331:                         gr2DVal[p + count] = gr2D(xt, yt, p + count + 1)
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2331, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2331, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2331, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_INCREF(__pyx_v_gr2D);
            __pyx_t_7 = __pyx_v_gr2D; __pyx_t_6 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
              __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
              if (likely(__pyx_t_6)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_6);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_7, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_8 = PyTuple_New(3+__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2331, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            if (__pyx_t_6) {
              __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
            }
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_27, __pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_34);
            PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_27, __pyx_t_34);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_27, __pyx_t_25);
            __pyx_t_5 = 0;
            __pyx_t_34 = 0;
            __pyx_t_25 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2331, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 2331, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_62 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_gr2DVal.diminfo[0].strides) = __pyx_t_35;
+2332:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_63 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_64 = 0;
            __pyx_t_65 = __pyx_v_xt;
            __pyx_t_66 = __pyx_v_yt;
            __pyx_t_67 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_67, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_64, __pyx_pybuffernd_col.diminfo[1].strides));
+2333:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_68 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_69 = 1;
            __pyx_t_70 = __pyx_v_xt;
            __pyx_t_71 = __pyx_v_yt;
            __pyx_t_72 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_69, __pyx_pybuffernd_col.diminfo[1].strides));
+2334:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_73 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_74 = 2;
            __pyx_t_75 = __pyx_v_xt;
            __pyx_t_76 = __pyx_v_yt;
            __pyx_t_77 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_col.diminfo[1].strides));
+2335:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+2336:                     if w < dp - 1:
          __pyx_t_24 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
          if (__pyx_t_24) {
/* … */
            goto __pyx_L22;
          }
+2337:                         w = w + 1
            __pyx_v_w = (__pyx_v_w + 1);
 2338:                     else:
+2339:                         xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          /*else*/ {
            __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2339, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2339, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2339, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2339, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2339, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            __pyx_t_5 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_8, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_6 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2339, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_INCREF(__pyx_v_pdelNxy);
            __Pyx_GIVEREF(__pyx_v_pdelNxy);
            PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_27, __pyx_v_pdelNxy);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_27, __pyx_t_7);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_27, __pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_34);
            PyTuple_SET_ITEM(__pyx_t_6, 5+__pyx_t_27, __pyx_t_34);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_6, 6+__pyx_t_27, __pyx_int_1);
            __pyx_t_7 = 0;
            __pyx_t_25 = 0;
            __pyx_t_34 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2339, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
              PyObject* sequence = __pyx_t_1;
              #if CYTHON_COMPILING_IN_CPYTHON
              Py_ssize_t size = Py_SIZE(sequence);
              #else
              Py_ssize_t size = PySequence_Size(sequence);
              #endif
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(0, 2339, __pyx_L1_error)
              }
              #if CYTHON_COMPILING_IN_CPYTHON
              if (likely(PyTuple_CheckExact(sequence))) {
                __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); 
                __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
              } else {
                __pyx_t_8 = PyList_GET_ITEM(sequence, 0); 
                __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
              }
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_6);
              #else
              __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2339, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2339, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              #endif
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            } else {
              Py_ssize_t index = -1;
              __pyx_t_34 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2339, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_34);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_52 = Py_TYPE(__pyx_t_34)->tp_iternext;
              index = 0; __pyx_t_8 = __pyx_t_52(__pyx_t_34); if (unlikely(!__pyx_t_8)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_8);
              index = 1; __pyx_t_6 = __pyx_t_52(__pyx_t_34); if (unlikely(!__pyx_t_6)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_6);
              if (__Pyx_IternextUnpackEndCheck(__pyx_t_52(__pyx_t_34), 2) < 0) __PYX_ERR(0, 2339, __pyx_L1_error)
              __pyx_t_52 = NULL;
              __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
              goto __pyx_L24_unpacking_done;
              __pyx_L23_unpacking_failed:;
              __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
              __pyx_t_52 = NULL;
              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
              __PYX_ERR(0, 2339, __pyx_L1_error)
              __pyx_L24_unpacking_done:;
            }
            if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2339, __pyx_L1_error)
            if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2339, __pyx_L1_error)
            __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
                }
              }
              __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2339, __pyx_L1_error)
            }
            __pyx_t_13 = 0;
            __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_8));
            __pyx_t_8 = 0;
            __pyx_t_14 = ((PyArrayObject *)__pyx_t_6);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                }
              }
              __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2339, __pyx_L1_error)
            }
            __pyx_t_14 = 0;
            __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_6));
            __pyx_t_6 = 0;
+2340:                         w = 0
            __pyx_v_w = 0;
          }
          __pyx_L22:;
        }
+2341:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 2342: 
+2343:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+2344:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 2345: 
+2346:         gr2DValmax = 0
    __pyx_v_gr2DValmax = 0.0;
+2347:         for i in range(0, p):
    __pyx_t_78 = __pyx_v_p;
    for (__pyx_t_79 = 0; __pyx_t_79 < __pyx_t_78; __pyx_t_79+=1) {
      __pyx_v_i = __pyx_t_79;
+2348:             if a[i] == 1:
      __pyx_t_80 = __pyx_v_i;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+2349:                 tmp = gr2DVal[i]
        __pyx_t_81 = __pyx_v_i;
        __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_gr2DVal.diminfo[0].strides));
+2350:                 if tmp > gr2DValmax:
        __pyx_t_24 = ((__pyx_v_tmp > __pyx_v_gr2DValmax) != 0);
        if (__pyx_t_24) {
/* … */
        }
+2351:                     gr2DValmax = tmp
          __pyx_v_gr2DValmax = __pyx_v_tmp;
 2352: 
+2353:         for k in range(0, p):
    __pyx_t_78 = __pyx_v_p;
    for (__pyx_t_79 = 0; __pyx_t_79 < __pyx_t_78; __pyx_t_79+=1) {
      __pyx_v_k = __pyx_t_79;
+2354:             if a[k] == 1:
      __pyx_t_82 = __pyx_v_k;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+2355:                 xo = X[k]
        __pyx_t_83 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_X.diminfo[0].strides));
+2356:                 yo = Y[k]
        __pyx_t_84 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_Y.diminfo[0].strides));
+2357:                 Io = I[xo, yo]
        __pyx_t_85 = __pyx_v_xo;
        __pyx_t_86 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides));
+2358:                 dr = gr2DVal[k] / gr2DValmax
        __pyx_t_87 = __pyx_v_k;
        __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_gr2DVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_gr2DValmax));
+2359:                 r[k] = r[k] + dr
        __pyx_t_88 = __pyx_v_k;
        __pyx_t_89 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_r.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_r.diminfo[0].strides)) + __pyx_v_dr);
+2360:                 rad = r[k]
        __pyx_t_90 = __pyx_v_k;
        __pyx_v_rad = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_r.diminfo[0].strides));
+2361:                 a[k] = 0
        __pyx_t_91 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+2362:                 rmax = math.ceil(rad)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2362, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2362, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyFloat_FromDouble(__pyx_v_rad); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2362, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_34 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_8);
          if (likely(__pyx_t_34)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
            __Pyx_INCREF(__pyx_t_34);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_8, function);
          }
        }
        if (!__pyx_t_34) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2362, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2362, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_34); __pyx_t_34 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2362, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        }
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_92 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_92 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2362, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_rmax = __pyx_t_92;
+2363:                 red = col[k, 0]
        __pyx_t_92 = __pyx_v_k;
        __pyx_t_93 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_col.diminfo[1].strides));
+2364:                 green = col[k, 1]
        __pyx_t_94 = __pyx_v_k;
        __pyx_t_95 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_95, __pyx_pybuffernd_col.diminfo[1].strides));
+2365:                 blue = col[k, 2]
        __pyx_t_96 = __pyx_v_k;
        __pyx_t_97 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_97, __pyx_pybuffernd_col.diminfo[1].strides));
+2366:                 for deli in range(0, rmax + 1):
        __pyx_t_98 = (__pyx_v_rmax + 1);
        for (__pyx_t_99 = 0; __pyx_t_99 < __pyx_t_98; __pyx_t_99+=1) {
          __pyx_v_deli = __pyx_t_99;
+2367:                     for delj in range (0, rmax + 1):
          __pyx_t_100 = (__pyx_v_rmax + 1);
          for (__pyx_t_101 = 0; __pyx_t_101 < __pyx_t_100; __pyx_t_101+=1) {
            __pyx_v_delj = __pyx_t_101;
+2368:                         if deli + delj <= rad:
            __pyx_t_24 = (((__pyx_v_deli + __pyx_v_delj) <= __pyx_v_rad) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
        }
+2369:                             i, j = xo + deli, yo + delj
              __pyx_t_102 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_103 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_102;
              __pyx_v_j = __pyx_t_103;
+2370:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L38_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L38_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+2371:                                 if I[i, j] == 0:
                __pyx_t_103 = __pyx_v_i;
                __pyx_t_102 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+2372:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L41;
                  }
+2373:                                         PN = I[i - 1, j]
                    __pyx_t_105 = (__pyx_v_i - 1);
                    __pyx_t_106 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_I.diminfo[1].strides));
 2374:                                     else:
+2375:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L41:;
+2376:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L42;
                  }
+2377:                                         PE = I[i, j + 1]
                    __pyx_t_107 = __pyx_v_i;
                    __pyx_t_108 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_I.diminfo[1].strides));
 2378:                                     else:
+2379:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L42:;
+2380:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L43;
                  }
+2381:                                         PW = I[i, j - 1]
                    __pyx_t_109 = __pyx_v_i;
                    __pyx_t_110 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_I.diminfo[1].strides));
 2382:                                     else:
+2383:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L43:;
+2384:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L44;
                  }
+2385:                                         PS = I[i + 1, j]
                    __pyx_t_111 = (__pyx_v_i + 1);
                    __pyx_t_112 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_I.diminfo[1].strides));
 2386:                                     else:
+2387:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L44:;
 2388: 
+2389:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L46_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L46_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L46_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L46_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+2390:                                         I[i, j] = Io
                    __pyx_t_113 = __pyx_v_i;
                    __pyx_t_114 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2391:                                         Col[i, j, 2] = red
                    __pyx_t_115 = __pyx_v_i;
                    __pyx_t_116 = __pyx_v_j;
                    __pyx_t_117 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2392:                                         Col[i, j, 1] = green
                    __pyx_t_118 = __pyx_v_i;
                    __pyx_t_119 = __pyx_v_j;
                    __pyx_t_120 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_119, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_120, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2393:                                         Col[i, j, 0] = blue
                    __pyx_t_121 = __pyx_v_i;
                    __pyx_t_122 = __pyx_v_j;
                    __pyx_t_123 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2394:                                         a[k] = 1
                    __pyx_t_124 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2395: 
+2396:                             i, j = xo - deli, yo + delj
              __pyx_t_125 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_126 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_125;
              __pyx_v_j = __pyx_t_126;
+2397:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L51_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L51_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+2398:                                 if I[i, j] == 0:
                __pyx_t_126 = __pyx_v_i;
                __pyx_t_125 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+2399:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L54;
                  }
+2400:                                         PN = I[i - 1, j]
                    __pyx_t_127 = (__pyx_v_i - 1);
                    __pyx_t_128 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_I.diminfo[1].strides));
 2401:                                     else:
+2402:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L54:;
+2403:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L55;
                  }
+2404:                                         PE = I[i, j + 1]
                    __pyx_t_129 = __pyx_v_i;
                    __pyx_t_130 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_I.diminfo[1].strides));
 2405:                                     else:
+2406:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L55:;
+2407:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L56;
                  }
+2408:                                         PW = I[i, j - 1]
                    __pyx_t_131 = __pyx_v_i;
                    __pyx_t_132 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_I.diminfo[1].strides));
 2409:                                     else:
+2410:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L56:;
+2411:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L57;
                  }
+2412:                                         PS = I[i + 1, j]
                    __pyx_t_133 = (__pyx_v_i + 1);
                    __pyx_t_134 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides));
 2413:                                     else:
+2414:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L57:;
 2415: 
+2416:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L59_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L59_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L59_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L59_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+2417:                                         I[i, j] = Io
                    __pyx_t_135 = __pyx_v_i;
                    __pyx_t_136 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2418:                                         Col[i, j, 2] = red
                    __pyx_t_137 = __pyx_v_i;
                    __pyx_t_138 = __pyx_v_j;
                    __pyx_t_139 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2419:                                         Col[i, j, 1] = green
                    __pyx_t_140 = __pyx_v_i;
                    __pyx_t_141 = __pyx_v_j;
                    __pyx_t_142 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2420:                                         Col[i, j, 0] = blue
                    __pyx_t_143 = __pyx_v_i;
                    __pyx_t_144 = __pyx_v_j;
                    __pyx_t_145 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2421:                                         a[k] = 1
                    __pyx_t_146 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2422: 
+2423:                             i, j = xo - deli, yo - delj
              __pyx_t_147 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_148 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_147;
              __pyx_v_j = __pyx_t_148;
+2424:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L64_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L64_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+2425:                                 if I[i, j] == 0:
                __pyx_t_148 = __pyx_v_i;
                __pyx_t_147 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_147, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+2426:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L67;
                  }
+2427:                                         PN = I[i - 1, j]
                    __pyx_t_149 = (__pyx_v_i - 1);
                    __pyx_t_150 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_150, __pyx_pybuffernd_I.diminfo[1].strides));
 2428:                                     else:
+2429:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L67:;
+2430:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L68;
                  }
+2431:                                         PE = I[i, j + 1]
                    __pyx_t_151 = __pyx_v_i;
                    __pyx_t_152 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides));
 2432:                                     else:
+2433:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L68:;
+2434:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L69;
                  }
+2435:                                         PW = I[i, j - 1]
                    __pyx_t_153 = __pyx_v_i;
                    __pyx_t_154 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides));
 2436:                                     else:
+2437:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L69:;
+2438:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L70;
                  }
+2439:                                         PS = I[i + 1, j]
                    __pyx_t_155 = (__pyx_v_i + 1);
                    __pyx_t_156 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides));
 2440:                                     else:
+2441:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L70:;
 2442: 
+2443:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L72_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L72_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L72_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L72_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+2444:                                         I[i, j] = Io
                    __pyx_t_157 = __pyx_v_i;
                    __pyx_t_158 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2445:                                         Col[i, j, 2] = red
                    __pyx_t_159 = __pyx_v_i;
                    __pyx_t_160 = __pyx_v_j;
                    __pyx_t_161 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2446:                                         Col[i, j, 1] = green
                    __pyx_t_162 = __pyx_v_i;
                    __pyx_t_163 = __pyx_v_j;
                    __pyx_t_164 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2447:                                         Col[i, j, 0] = blue
                    __pyx_t_165 = __pyx_v_i;
                    __pyx_t_166 = __pyx_v_j;
                    __pyx_t_167 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2448:                                         a[k] = 1
                    __pyx_t_168 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2449: 
+2450:                             i, j = xo + deli, yo - delj
              __pyx_t_169 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_170 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_169;
              __pyx_v_j = __pyx_t_170;
+2451:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L77_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L77_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+2452:                                 if I[i, j] == 0:
                __pyx_t_170 = __pyx_v_i;
                __pyx_t_169 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+2453:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L80;
                  }
+2454:                                         PN = I[i - 1, j]
                    __pyx_t_171 = (__pyx_v_i - 1);
                    __pyx_t_172 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_172, __pyx_pybuffernd_I.diminfo[1].strides));
 2455:                                     else:
+2456:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L80:;
+2457:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L81;
                  }
+2458:                                         PE = I[i, j + 1]
                    __pyx_t_173 = __pyx_v_i;
                    __pyx_t_174 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_173, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_174, __pyx_pybuffernd_I.diminfo[1].strides));
 2459:                                     else:
+2460:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L81:;
+2461:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L82;
                  }
+2462:                                         PW = I[i, j - 1]
                    __pyx_t_175 = __pyx_v_i;
                    __pyx_t_176 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_176, __pyx_pybuffernd_I.diminfo[1].strides));
 2463:                                     else:
+2464:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L82:;
+2465:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L83;
                  }
+2466:                                         PS = I[i + 1, j]
                    __pyx_t_177 = (__pyx_v_i + 1);
                    __pyx_t_178 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_178, __pyx_pybuffernd_I.diminfo[1].strides));
 2467:                                     else:
+2468:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L83:;
 2469: 
+2470:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L85_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L85_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L85_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L85_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+2471:                                         I[i, j] = Io
                    __pyx_t_179 = __pyx_v_i;
                    __pyx_t_180 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_180, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2472:                                         Col[i, j, 2] = red
                    __pyx_t_181 = __pyx_v_i;
                    __pyx_t_182 = __pyx_v_j;
                    __pyx_t_183 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_181, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_182, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_183, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2473:                                         Col[i, j, 1] = green
                    __pyx_t_184 = __pyx_v_i;
                    __pyx_t_185 = __pyx_v_j;
                    __pyx_t_186 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2474:                                         Col[i, j, 0] = blue
                    __pyx_t_187 = __pyx_v_i;
                    __pyx_t_188 = __pyx_v_j;
                    __pyx_t_189 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2475:                                         a[k] = 1
                    __pyx_t_190 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_190, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+2476:                 if a[k] == 0:
        __pyx_t_98 = __pyx_v_k;
        __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
        if (__pyx_t_24) {
/* … */
        }
+2477:                     win = rmax
          __pyx_v_win = __pyx_v_rmax;
+2478:                     xmin = max(0, xo - win)
          __pyx_t_99 = (__pyx_v_xo - __pyx_v_win);
          __pyx_t_191 = 0;
          if (((__pyx_t_99 > __pyx_t_191) != 0)) {
            __pyx_t_100 = __pyx_t_99;
          } else {
            __pyx_t_100 = __pyx_t_191;
          }
          __pyx_v_xmin = __pyx_t_100;
+2479:                     xmax = min(m - 1, xo + win)
          __pyx_t_100 = (__pyx_v_xo + __pyx_v_win);
          __pyx_t_99 = (__pyx_v_m - 1);
          if (((__pyx_t_100 < __pyx_t_99) != 0)) {
            __pyx_t_101 = __pyx_t_100;
          } else {
            __pyx_t_101 = __pyx_t_99;
          }
          __pyx_v_xmax = __pyx_t_101;
+2480:                     ymin = max(0, yo - win)
          __pyx_t_101 = (__pyx_v_yo - __pyx_v_win);
          __pyx_t_191 = 0;
          if (((__pyx_t_101 > __pyx_t_191) != 0)) {
            __pyx_t_100 = __pyx_t_101;
          } else {
            __pyx_t_100 = __pyx_t_191;
          }
          __pyx_v_ymin = __pyx_t_100;
+2481:                     ymax = min(n - 1, yo + win)
          __pyx_t_100 = (__pyx_v_yo + __pyx_v_win);
          __pyx_t_101 = (__pyx_v_n - 1);
          if (((__pyx_t_100 < __pyx_t_101) != 0)) {
            __pyx_t_99 = __pyx_t_100;
          } else {
            __pyx_t_99 = __pyx_t_101;
          }
          __pyx_v_ymax = __pyx_t_99;
+2482:                     a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
          __pyx_t_99 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 2483: 
+2484:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+2485:         nnz = cv2.countNonZero(I)
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_25);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_25, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_25, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2485, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2485, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2485, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __pyx_t_78 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_78 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2485, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_nnz = __pyx_t_78;
  }
 2486: 
 2487: 
+2488:     obj.p = p
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_1) < 0) __PYX_ERR(0, 2488, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2489:     toc = time.time()
  __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_25 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_25)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_25) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2489, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2489, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2489, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_toc = __pyx_t_23;
+2490:     obj.exetime = toc - tic
  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_1) < 0) __PYX_ERR(0, 2490, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2491:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_delete); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_arange); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_34);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_34, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_192 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_192)) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_192);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_192, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_192, 0+__pyx_t_27, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_192, 1+__pyx_t_27, __pyx_t_7);
  __pyx_t_8 = 0;
  __pyx_t_7 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_192, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_192); __pyx_t_192 = 0;
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_34 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
    __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_25);
    if (likely(__pyx_t_34)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_34);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_25, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_192 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_192)) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_192);
  if (__pyx_t_34) {
    __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_192, 0, __pyx_t_34); __pyx_t_34 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_192, 0+__pyx_t_27, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_192, 1+__pyx_t_27, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_192, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_192); __pyx_t_192 = 0;
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_1) < 0) __PYX_ERR(0, 2491, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2492:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __pyx_t_192 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_delete); if (unlikely(!__pyx_t_192)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_192);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_arange); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_34);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_34, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_7);
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
  __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_5, NULL); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_34 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_192))) {
    __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_192);
    if (likely(__pyx_t_34)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_192);
      __Pyx_INCREF(__pyx_t_34);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_192, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_34) {
    __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_34); __pyx_t_34 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_25);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_25);
  __pyx_t_25 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_192, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_192); __pyx_t_192 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_1) < 0) __PYX_ERR(0, 2492, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2493:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 2493, __pyx_L1_error)
+2494:     obj.gr2DVal = gr2DVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_gr2DVal, ((PyObject *)__pyx_v_gr2DVal)) < 0) __PYX_ERR(0, 2494, __pyx_L1_error)
+2495:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 2495, __pyx_L1_error)
 2496: 
+2497:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 2498: 
 2499: 
+2500: def Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_27Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_27Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D = {"Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D", (PyCFunction)__pyx_pw_9libEVOLVE_27Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_27Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_26Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_26Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  PyObject *__pyx_v_gr2D = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_rmax;
  PY_LONG_LONG __pyx_v_win;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_gr2DValmax;
  float __pyx_v_dr;
  float __pyx_v_rad;
  float __pyx_v_tmp;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_r = 0;
  PyArrayObject *__pyx_v_gr2DVal = 0;
  CYTHON_UNUSED PyArrayObject *__pyx_v_rold = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_gr2DVal;
  __Pyx_Buffer __pyx_pybuffer_gr2DVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_r;
  __Pyx_Buffer __pyx_pybuffer_r;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_rold;
  __Pyx_Buffer __pyx_pybuffer_rold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_r.pybuffer.buf = NULL;
  __pyx_pybuffer_r.refcount = 0;
  __pyx_pybuffernd_r.data = NULL;
  __pyx_pybuffernd_r.rcbuffer = &__pyx_pybuffer_r;
  __pyx_pybuffer_gr2DVal.pybuffer.buf = NULL;
  __pyx_pybuffer_gr2DVal.refcount = 0;
  __pyx_pybuffernd_gr2DVal.data = NULL;
  __pyx_pybuffernd_gr2DVal.rcbuffer = &__pyx_pybuffer_gr2DVal;
  __pyx_pybuffer_rold.pybuffer.buf = NULL;
  __pyx_pybuffer_rold.refcount = 0;
  __pyx_pybuffernd_rold.data = NULL;
  __pyx_pybuffernd_rold.rcbuffer = &__pyx_pybuffer_rold;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_34);
  __Pyx_XDECREF(__pyx_t_192);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_r.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_rold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF(__pyx_v_gr2D);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XDECREF((PyObject *)__pyx_v_gr2DVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_rold);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__37 = PyTuple_Pack(64, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_gr2D, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_countim, __pyx_n_s_rmax, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_w, __pyx_n_s_Iter, __pyx_n_s_gr2DValmax, __pyx_n_s_dr, __pyx_n_s_rad, __pyx_n_s_tmp, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_r, __pyx_n_s_gr2DVal, __pyx_n_s_rold, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 2500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__37);
  __Pyx_GIVEREF(__pyx_tuple__37);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_27Evolve_2D_Anisotropic_Continuous_NeighbourHoodBased_N8_with_gr2D, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_4, __pyx_t_2) < 0) __PYX_ERR(0, 2500, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(1, 0, 64, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_4, 2500, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 2500, __pyx_L1_error)
 2501: 
 2502:     # Grabbing data from the input object
+2503:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2503, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+2504:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2504, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+2505:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2505, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+2506:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2506, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+2507:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2507, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+2508:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+2509:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2509, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+2510:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+2511:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+2512:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+2513:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+2514:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+2515:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
+2516:     gr2D = obj.gr2D
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_gr2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_gr2D = __pyx_t_1;
  __pyx_t_1 = 0;
 2517: 
 2518:     # Declaring other variables
 2519:     cdef double tic, toc
 2520:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, xt, yt, dp, nnz, countim, rmax, win, xmin, xmax, ymin, ymax, i, j, k, xo, yo, w, Iter
 2521:     cdef float gr2DValmax, dr, rad, tmp, dt, f, t, red, green, blue
+2522:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2522, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2522, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2523:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.zeros(MN, dtype=np.int8)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2523, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2523, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2524:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2524, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2524, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2524, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+2525:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2525, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2525, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2526:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2526, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2526, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2527:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2527, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2527, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2527, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2528:     cdef np.ndarray[np.float64_t, ndim = 1] r = np.zeros(MN, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2528, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_r.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_r.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2528, __pyx_L1_error)
    } else {__pyx_pybuffernd_r.diminfo[0].strides = __pyx_pybuffernd_r.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_r.diminfo[0].shape = __pyx_pybuffernd_r.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_r = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+2529:     cdef np.ndarray[np.float64_t, ndim = 1] gr2DVal = np.zeros(MN, dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2529, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2529, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_gr2DVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2529, __pyx_L1_error)
    } else {__pyx_pybuffernd_gr2DVal.diminfo[0].strides = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_gr2DVal.diminfo[0].shape = __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_gr2DVal = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2530:     cdef np.ndarray[np.float64_t, ndim = 1] rold = np.zeros(MN, dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2530, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2530, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_rold.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_rold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_rold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2530, __pyx_L1_error)
    } else {__pyx_pybuffernd_rold.diminfo[0].strides = __pyx_pybuffernd_rold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_rold.diminfo[0].shape = __pyx_pybuffernd_rold.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_rold = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2531:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2531, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2531, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2532:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2532, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2532, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_19 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2533:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2534:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2534, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2534, __pyx_L1_error)
  }
  __pyx_t_19 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_8));
  __pyx_t_8 = 0;
+2535:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2535, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2535, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2535, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_tic = __pyx_t_23;
 2536: 
 2537: 
 2538: 
+2539:     t = 0
  __pyx_v_t = 0.0;
+2540:     p = 0
  __pyx_v_p = 0;
+2541:     dp = 0
  __pyx_v_dp = 0;
+2542:     countim = 0
  __pyx_v_countim = 0;
+2543:     nnz = cv2.countNonZero(I)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_INCREF(((PyObject *)__pyx_v_I));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_I));
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_8); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2543, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_nnz = __pyx_t_2;
+2544:     Iter = 1
  __pyx_v_Iter = 1;
+2545:     while nnz < MN:
  while (1) {
    __pyx_t_24 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_24) break;
+2546:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+2547:         dt = 1.0 / Gt(t)
    __pyx_t_6 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_1 = __pyx_v_Gt; __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2547, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_8, 1.0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2547, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_dt = __pyx_t_3;
+2548:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_1 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_6 = __pyx_v_Ndot; __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2548, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2548, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_25, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2548, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = PyNumber_Multiply(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_8); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2548, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_v_dp = __pyx_t_2;
+2549:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+2550:         if pdelNxy == []:
    __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2550, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2550, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_24 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_24 < 0)) __PYX_ERR(0, 2550, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_24) {
/* … */
      goto __pyx_L5;
    }
+2551:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
      __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_24 = __pyx_t_26;
      __pyx_L7_bool_binop_done:;
      if (__pyx_t_24) {
/* … */
      }
+2552:                 count = 0
        __pyx_v_count = 0;
+2553:                 while count < dp:
        while (1) {
          __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_24) break;
+2554:                     xt = np.random.randint(0, m - 1)
          __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2554, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2554, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_randint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2554, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2554, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_25 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_25)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_25);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_7 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2554, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (__pyx_t_25) {
            __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_25); __pyx_t_25 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_27, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2554, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2554, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_v_xt = __pyx_t_2;
+2555:                     yt = np.random.randint(0, n - 1)
          __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2555, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2555, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_randint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2555, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2555, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_6 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2555, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          if (__pyx_t_6) {
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_6); __pyx_t_6 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_7);
          __pyx_t_7 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2555, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2555, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_v_yt = __pyx_t_2;
+2556:                     if I[xt, yt] == 0:
          __pyx_t_2 = __pyx_v_xt;
          __pyx_t_28 = __pyx_v_yt;
          __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_24) {
/* … */
          }
        }
+2557:                         I[xt, yt] = p + count + 1
            __pyx_t_29 = __pyx_v_xt;
            __pyx_t_30 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+2558:                         X[p + count] = xt
            __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+2559:                         Y[p + count] = yt
            __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+2560:                         a[p + count] = 1
            __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+2561:                         gr2DVal[p + count] = gr2D(xt, yt, p + count + 1)
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2561, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2561, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2561, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_v_gr2D);
            __pyx_t_6 = __pyx_v_gr2D; __pyx_t_5 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_6, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_34 = PyTuple_New(3+__pyx_t_27); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2561, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_34, 0+__pyx_t_27, __pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_34, 1+__pyx_t_27, __pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_34, 2+__pyx_t_27, __pyx_t_7);
            __pyx_t_8 = 0;
            __pyx_t_25 = 0;
            __pyx_t_7 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2561, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 2561, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_36 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_gr2DVal.diminfo[0].strides) = __pyx_t_35;
+2562:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_37 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_38 = 0;
            __pyx_t_39 = __pyx_v_xt;
            __pyx_t_40 = __pyx_v_yt;
            __pyx_t_41 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_col.diminfo[1].strides));
+2563:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_42 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_43 = 1;
            __pyx_t_44 = __pyx_v_xt;
            __pyx_t_45 = __pyx_v_yt;
            __pyx_t_46 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_col.diminfo[1].strides));
+2564:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_47 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_48 = 2;
            __pyx_t_49 = __pyx_v_xt;
            __pyx_t_50 = __pyx_v_yt;
            __pyx_t_51 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_col.diminfo[1].strides));
+2565:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+2566:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 2567:         else:
+2568:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
    /*else*/ {
      __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_24 = __pyx_t_26;
      __pyx_L14_bool_binop_done:;
      if (__pyx_t_24) {
/* … */
      }
    }
    __pyx_L5:;
+2569:                 xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_34);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_8 = NULL;
        __pyx_t_27 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_34);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_34, function);
            __pyx_t_27 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_INCREF(__pyx_v_pdelNxy);
        __Pyx_GIVEREF(__pyx_v_pdelNxy);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_v_pdelNxy);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_27, __pyx_t_6);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_27, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_27, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_27, __pyx_t_25);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_27, __pyx_int_1);
        __pyx_t_6 = 0;
        __pyx_t_7 = 0;
        __pyx_t_25 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
          PyObject* sequence = __pyx_t_1;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 2569, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_34 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_34 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_34);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_34 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2569, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_34);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2569, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_25 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2569, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_52 = Py_TYPE(__pyx_t_25)->tp_iternext;
          index = 0; __pyx_t_34 = __pyx_t_52(__pyx_t_25); if (unlikely(!__pyx_t_34)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_34);
          index = 1; __pyx_t_5 = __pyx_t_52(__pyx_t_25); if (unlikely(!__pyx_t_5)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_52(__pyx_t_25), 2) < 0) __PYX_ERR(0, 2569, __pyx_L1_error)
          __pyx_t_52 = NULL;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          goto __pyx_L18_unpacking_done;
          __pyx_L17_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_52 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 2569, __pyx_L1_error)
          __pyx_L18_unpacking_done:;
        }
        if (!(likely(((__pyx_t_34) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_34, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2569, __pyx_L1_error)
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2569, __pyx_L1_error)
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_34);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
            }
          }
          __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2569, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_34));
        __pyx_t_34 = 0;
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
          }
          __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2569, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+2570:                 w = 0
        __pyx_v_w = 0;
+2571:                 count = 0
        __pyx_v_count = 0;
+2572:                 while count < dp:
        while (1) {
          __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_24) break;
+2573:                     xt = xtrial[w]
          __pyx_t_53 = __pyx_v_w;
          __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+2574:                     yt = ytrial[w]
          __pyx_t_54 = __pyx_v_w;
          __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+2575:                     if I[xt, yt] == 0:
          __pyx_t_55 = __pyx_v_xt;
          __pyx_t_56 = __pyx_v_yt;
          __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_56, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_24) {
/* … */
          }
+2576:                         I[xt, yt] = p + count + 1
            __pyx_t_57 = __pyx_v_xt;
            __pyx_t_58 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_58, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+2577:                         X[p + count] = xt
            __pyx_t_59 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+2578:                         Y[p + count] = yt
            __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+2579:                         a[p + count] = 1
            __pyx_t_61 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+2580:                         gr2DVal[p + count] = gr2D(xt, yt, p + count + 1)
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2580, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2580, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2580, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_INCREF(__pyx_v_gr2D);
            __pyx_t_7 = __pyx_v_gr2D; __pyx_t_6 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
              __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
              if (likely(__pyx_t_6)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_6);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_7, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_8 = PyTuple_New(3+__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2580, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            if (__pyx_t_6) {
              __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
            }
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_27, __pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_34);
            PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_27, __pyx_t_34);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_27, __pyx_t_25);
            __pyx_t_5 = 0;
            __pyx_t_34 = 0;
            __pyx_t_25 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2580, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 2580, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_62 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_gr2DVal.diminfo[0].strides) = __pyx_t_35;
+2581:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_63 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_64 = 0;
            __pyx_t_65 = __pyx_v_xt;
            __pyx_t_66 = __pyx_v_yt;
            __pyx_t_67 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_67, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_64, __pyx_pybuffernd_col.diminfo[1].strides));
+2582:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_68 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_69 = 1;
            __pyx_t_70 = __pyx_v_xt;
            __pyx_t_71 = __pyx_v_yt;
            __pyx_t_72 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_69, __pyx_pybuffernd_col.diminfo[1].strides));
+2583:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_73 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_74 = 2;
            __pyx_t_75 = __pyx_v_xt;
            __pyx_t_76 = __pyx_v_yt;
            __pyx_t_77 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_col.diminfo[1].strides));
+2584:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+2585:                     if w < dp - 1:
          __pyx_t_24 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
          if (__pyx_t_24) {
/* … */
            goto __pyx_L22;
          }
+2586:                         w = w + 1
            __pyx_v_w = (__pyx_v_w + 1);
 2587:                     else:
+2588:                         xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          /*else*/ {
            __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2588, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2588, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2588, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2588, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2588, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            __pyx_t_5 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_8, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_6 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2588, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_INCREF(__pyx_v_pdelNxy);
            __Pyx_GIVEREF(__pyx_v_pdelNxy);
            PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_27, __pyx_v_pdelNxy);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_27, __pyx_t_7);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_27, __pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_34);
            PyTuple_SET_ITEM(__pyx_t_6, 5+__pyx_t_27, __pyx_t_34);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_6, 6+__pyx_t_27, __pyx_int_1);
            __pyx_t_7 = 0;
            __pyx_t_25 = 0;
            __pyx_t_34 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2588, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
              PyObject* sequence = __pyx_t_1;
              #if CYTHON_COMPILING_IN_CPYTHON
              Py_ssize_t size = Py_SIZE(sequence);
              #else
              Py_ssize_t size = PySequence_Size(sequence);
              #endif
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(0, 2588, __pyx_L1_error)
              }
              #if CYTHON_COMPILING_IN_CPYTHON
              if (likely(PyTuple_CheckExact(sequence))) {
                __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); 
                __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
              } else {
                __pyx_t_8 = PyList_GET_ITEM(sequence, 0); 
                __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
              }
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_6);
              #else
              __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2588, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2588, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              #endif
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            } else {
              Py_ssize_t index = -1;
              __pyx_t_34 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2588, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_34);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_52 = Py_TYPE(__pyx_t_34)->tp_iternext;
              index = 0; __pyx_t_8 = __pyx_t_52(__pyx_t_34); if (unlikely(!__pyx_t_8)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_8);
              index = 1; __pyx_t_6 = __pyx_t_52(__pyx_t_34); if (unlikely(!__pyx_t_6)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_6);
              if (__Pyx_IternextUnpackEndCheck(__pyx_t_52(__pyx_t_34), 2) < 0) __PYX_ERR(0, 2588, __pyx_L1_error)
              __pyx_t_52 = NULL;
              __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
              goto __pyx_L24_unpacking_done;
              __pyx_L23_unpacking_failed:;
              __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
              __pyx_t_52 = NULL;
              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
              __PYX_ERR(0, 2588, __pyx_L1_error)
              __pyx_L24_unpacking_done:;
            }
            if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2588, __pyx_L1_error)
            if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2588, __pyx_L1_error)
            __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
                }
              }
              __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2588, __pyx_L1_error)
            }
            __pyx_t_13 = 0;
            __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_8));
            __pyx_t_8 = 0;
            __pyx_t_14 = ((PyArrayObject *)__pyx_t_6);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                }
              }
              __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2588, __pyx_L1_error)
            }
            __pyx_t_14 = 0;
            __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_6));
            __pyx_t_6 = 0;
+2589:                         w = 0
            __pyx_v_w = 0;
          }
          __pyx_L22:;
        }
+2590:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 2591: 
 2592: 
+2593:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+2594:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 2595: 
+2596:         gr2DValmax = 0
    __pyx_v_gr2DValmax = 0.0;
+2597:         for i in range(0, p):
    __pyx_t_78 = __pyx_v_p;
    for (__pyx_t_79 = 0; __pyx_t_79 < __pyx_t_78; __pyx_t_79+=1) {
      __pyx_v_i = __pyx_t_79;
+2598:             if a[i] == 1:
      __pyx_t_80 = __pyx_v_i;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+2599:                 tmp = gr2DVal[i]
        __pyx_t_81 = __pyx_v_i;
        __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_gr2DVal.diminfo[0].strides));
+2600:                 if tmp > gr2DValmax:
        __pyx_t_24 = ((__pyx_v_tmp > __pyx_v_gr2DValmax) != 0);
        if (__pyx_t_24) {
/* … */
        }
+2601:                     gr2DValmax = tmp
          __pyx_v_gr2DValmax = __pyx_v_tmp;
 2602: 
+2603:         for k in range(0, p):
    __pyx_t_78 = __pyx_v_p;
    for (__pyx_t_79 = 0; __pyx_t_79 < __pyx_t_78; __pyx_t_79+=1) {
      __pyx_v_k = __pyx_t_79;
+2604:             if a[k] == 1:
      __pyx_t_82 = __pyx_v_k;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+2605:                 xo = X[k]
        __pyx_t_83 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_X.diminfo[0].strides));
+2606:                 yo = Y[k]
        __pyx_t_84 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_Y.diminfo[0].strides));
+2607:                 Io = I[xo, yo]
        __pyx_t_85 = __pyx_v_xo;
        __pyx_t_86 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides));
+2608:                 dr = gr2DVal[k] / gr2DValmax
        __pyx_t_87 = __pyx_v_k;
        __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_gr2DVal.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_gr2DVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_gr2DValmax));
+2609:                 r[k] = r[k] + dr
        __pyx_t_88 = __pyx_v_k;
        __pyx_t_89 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_r.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_r.diminfo[0].strides)) + __pyx_v_dr);
+2610:                 rad = r[k]
        __pyx_t_90 = __pyx_v_k;
        __pyx_v_rad = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_r.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_r.diminfo[0].strides));
+2611:                 a[k] = 0
        __pyx_t_91 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+2612:                 rmax = math.ceil(rad)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2612, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2612, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyFloat_FromDouble(__pyx_v_rad); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2612, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_34 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_8);
          if (likely(__pyx_t_34)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
            __Pyx_INCREF(__pyx_t_34);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_8, function);
          }
        }
        if (!__pyx_t_34) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2612, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2612, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_34); __pyx_t_34 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2612, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        }
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_92 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_92 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2612, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_rmax = __pyx_t_92;
+2613:                 red = col[k, 0]
        __pyx_t_92 = __pyx_v_k;
        __pyx_t_93 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_col.diminfo[1].strides));
+2614:                 green = col[k, 1]
        __pyx_t_94 = __pyx_v_k;
        __pyx_t_95 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_95, __pyx_pybuffernd_col.diminfo[1].strides));
+2615:                 blue = col[k, 2]
        __pyx_t_96 = __pyx_v_k;
        __pyx_t_97 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_97, __pyx_pybuffernd_col.diminfo[1].strides));
+2616:                 for deli in range(0, rmax + 1):
        __pyx_t_98 = (__pyx_v_rmax + 1);
        for (__pyx_t_99 = 0; __pyx_t_99 < __pyx_t_98; __pyx_t_99+=1) {
          __pyx_v_deli = __pyx_t_99;
+2617:                     for delj in range (0, rmax + 1):
          __pyx_t_100 = (__pyx_v_rmax + 1);
          for (__pyx_t_101 = 0; __pyx_t_101 < __pyx_t_100; __pyx_t_101+=1) {
            __pyx_v_delj = __pyx_t_101;
+2618:                         if deli <= rad and delj <= rad:
            __pyx_t_26 = ((__pyx_v_deli <= __pyx_v_rad) != 0);
            if (__pyx_t_26) {
            } else {
              __pyx_t_24 = __pyx_t_26;
              goto __pyx_L37_bool_binop_done;
            }
            __pyx_t_26 = ((__pyx_v_delj <= __pyx_v_rad) != 0);
            __pyx_t_24 = __pyx_t_26;
            __pyx_L37_bool_binop_done:;
            if (__pyx_t_24) {
/* … */
            }
          }
        }
+2619:                             i, j = xo + deli, yo + delj
              __pyx_t_102 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_103 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_102;
              __pyx_v_j = __pyx_t_103;
+2620:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L40_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L40_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+2621:                                 if I[i, j] == 0:
                __pyx_t_103 = __pyx_v_i;
                __pyx_t_102 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+2622:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L43;
                  }
+2623:                                         PN = I[i - 1, j]
                    __pyx_t_105 = (__pyx_v_i - 1);
                    __pyx_t_106 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_I.diminfo[1].strides));
 2624:                                     else:
+2625:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L43:;
+2626:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L44;
                  }
+2627:                                         PE = I[i, j + 1]
                    __pyx_t_107 = __pyx_v_i;
                    __pyx_t_108 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_I.diminfo[1].strides));
 2628:                                     else:
+2629:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L44:;
+2630:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L45;
                  }
+2631:                                         PW = I[i, j - 1]
                    __pyx_t_109 = __pyx_v_i;
                    __pyx_t_110 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_I.diminfo[1].strides));
 2632:                                     else:
+2633:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L45:;
+2634:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L46;
                  }
+2635:                                         PS = I[i + 1, j]
                    __pyx_t_111 = (__pyx_v_i + 1);
                    __pyx_t_112 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_I.diminfo[1].strides));
 2636:                                     else:
+2637:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L46:;
 2638: 
+2639:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L48_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L48_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L48_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L48_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+2640:                                         I[i, j] = Io
                    __pyx_t_113 = __pyx_v_i;
                    __pyx_t_114 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2641:                                         Col[i, j, 2] = red
                    __pyx_t_115 = __pyx_v_i;
                    __pyx_t_116 = __pyx_v_j;
                    __pyx_t_117 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2642:                                         Col[i, j, 1] = green
                    __pyx_t_118 = __pyx_v_i;
                    __pyx_t_119 = __pyx_v_j;
                    __pyx_t_120 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_119, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_120, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2643:                                         Col[i, j, 0] = blue
                    __pyx_t_121 = __pyx_v_i;
                    __pyx_t_122 = __pyx_v_j;
                    __pyx_t_123 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2644:                                         a[k] = 1
                    __pyx_t_124 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2645: 
+2646:                             i, j = xo - deli, yo + delj
              __pyx_t_125 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_126 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_125;
              __pyx_v_j = __pyx_t_126;
+2647:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L53_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L53_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+2648:                                 if I[i, j] == 0:
                __pyx_t_126 = __pyx_v_i;
                __pyx_t_125 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+2649:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L56;
                  }
+2650:                                         PN = I[i - 1, j]
                    __pyx_t_127 = (__pyx_v_i - 1);
                    __pyx_t_128 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_I.diminfo[1].strides));
 2651:                                     else:
+2652:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L56:;
+2653:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L57;
                  }
+2654:                                         PE = I[i, j + 1]
                    __pyx_t_129 = __pyx_v_i;
                    __pyx_t_130 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_I.diminfo[1].strides));
 2655:                                     else:
+2656:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L57:;
+2657:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L58;
                  }
+2658:                                         PW = I[i, j - 1]
                    __pyx_t_131 = __pyx_v_i;
                    __pyx_t_132 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_I.diminfo[1].strides));
 2659:                                     else:
+2660:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L58:;
+2661:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L59;
                  }
+2662:                                         PS = I[i + 1, j]
                    __pyx_t_133 = (__pyx_v_i + 1);
                    __pyx_t_134 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides));
 2663:                                     else:
+2664:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L59:;
 2665: 
+2666:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L61_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L61_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L61_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L61_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+2667:                                         I[i, j] = Io
                    __pyx_t_135 = __pyx_v_i;
                    __pyx_t_136 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2668:                                         Col[i, j, 2] = red
                    __pyx_t_137 = __pyx_v_i;
                    __pyx_t_138 = __pyx_v_j;
                    __pyx_t_139 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2669:                                         Col[i, j, 1] = green
                    __pyx_t_140 = __pyx_v_i;
                    __pyx_t_141 = __pyx_v_j;
                    __pyx_t_142 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2670:                                         Col[i, j, 0] = blue
                    __pyx_t_143 = __pyx_v_i;
                    __pyx_t_144 = __pyx_v_j;
                    __pyx_t_145 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2671:                                         a[k] = 1
                    __pyx_t_146 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2672: 
+2673:                             i, j = xo - deli, yo - delj
              __pyx_t_147 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_148 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_147;
              __pyx_v_j = __pyx_t_148;
+2674:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L66_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L66_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+2675:                                 if I[i, j] == 0:
                __pyx_t_148 = __pyx_v_i;
                __pyx_t_147 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_147, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+2676:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L69;
                  }
+2677:                                         PN = I[i - 1, j]
                    __pyx_t_149 = (__pyx_v_i - 1);
                    __pyx_t_150 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_150, __pyx_pybuffernd_I.diminfo[1].strides));
 2678:                                     else:
+2679:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L69:;
+2680:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L70;
                  }
+2681:                                         PE = I[i, j + 1]
                    __pyx_t_151 = __pyx_v_i;
                    __pyx_t_152 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides));
 2682:                                     else:
+2683:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L70:;
+2684:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L71;
                  }
+2685:                                         PW = I[i, j - 1]
                    __pyx_t_153 = __pyx_v_i;
                    __pyx_t_154 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides));
 2686:                                     else:
+2687:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L71:;
+2688:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L72;
                  }
+2689:                                         PS = I[i + 1, j]
                    __pyx_t_155 = (__pyx_v_i + 1);
                    __pyx_t_156 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides));
 2690:                                     else:
+2691:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L72:;
 2692: 
+2693:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L74_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L74_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L74_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L74_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+2694:                                         I[i, j] = Io
                    __pyx_t_157 = __pyx_v_i;
                    __pyx_t_158 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2695:                                         Col[i, j, 2] = red
                    __pyx_t_159 = __pyx_v_i;
                    __pyx_t_160 = __pyx_v_j;
                    __pyx_t_161 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2696:                                         Col[i, j, 1] = green
                    __pyx_t_162 = __pyx_v_i;
                    __pyx_t_163 = __pyx_v_j;
                    __pyx_t_164 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2697:                                         Col[i, j, 0] = blue
                    __pyx_t_165 = __pyx_v_i;
                    __pyx_t_166 = __pyx_v_j;
                    __pyx_t_167 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2698:                                         a[k] = 1
                    __pyx_t_168 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2699: 
+2700:                             i, j = xo + deli, yo - delj
              __pyx_t_169 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_170 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_169;
              __pyx_v_j = __pyx_t_170;
+2701:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_104 = (__pyx_t_26 != 0);
              if (__pyx_t_104) {
              } else {
                __pyx_t_24 = __pyx_t_104;
                goto __pyx_L79_bool_binop_done;
              }
              __pyx_t_104 = (0 <= __pyx_v_j);
              if (__pyx_t_104) {
                __pyx_t_104 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_104 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L79_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+2702:                                 if I[i, j] == 0:
                __pyx_t_170 = __pyx_v_i;
                __pyx_t_169 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+2703:                                     if i > 0:
                  __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L82;
                  }
+2704:                                         PN = I[i - 1, j]
                    __pyx_t_171 = (__pyx_v_i - 1);
                    __pyx_t_172 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_172, __pyx_pybuffernd_I.diminfo[1].strides));
 2705:                                     else:
+2706:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L82:;
+2707:                                     if j < n - 1:
                  __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L83;
                  }
+2708:                                         PE = I[i, j + 1]
                    __pyx_t_173 = __pyx_v_i;
                    __pyx_t_174 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_173, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_174, __pyx_pybuffernd_I.diminfo[1].strides));
 2709:                                     else:
+2710:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L83:;
+2711:                                     if j > 0:
                  __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L84;
                  }
+2712:                                         PW = I[i, j - 1]
                    __pyx_t_175 = __pyx_v_i;
                    __pyx_t_176 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_176, __pyx_pybuffernd_I.diminfo[1].strides));
 2713:                                     else:
+2714:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L84:;
+2715:                                     if i < m - 1:
                  __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_24) {
/* … */
                    goto __pyx_L85;
                  }
+2716:                                         PS = I[i + 1, j]
                    __pyx_t_177 = (__pyx_v_i + 1);
                    __pyx_t_178 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_178, __pyx_pybuffernd_I.diminfo[1].strides));
 2717:                                     else:
+2718:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L85:;
 2719: 
+2720:                                     if PN == Io or PE == Io or PW == Io or PS == Io:
                  __pyx_t_26 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L87_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L87_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_26) {
                  } else {
                    __pyx_t_24 = __pyx_t_26;
                    goto __pyx_L87_bool_binop_done;
                  }
                  __pyx_t_26 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L87_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
+2721:                                         I[i, j] = Io
                    __pyx_t_179 = __pyx_v_i;
                    __pyx_t_180 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_180, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2722:                                         Col[i, j, 2] = red
                    __pyx_t_181 = __pyx_v_i;
                    __pyx_t_182 = __pyx_v_j;
                    __pyx_t_183 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_181, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_182, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_183, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2723:                                         Col[i, j, 1] = green
                    __pyx_t_184 = __pyx_v_i;
                    __pyx_t_185 = __pyx_v_j;
                    __pyx_t_186 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2724:                                         Col[i, j, 0] = blue
                    __pyx_t_187 = __pyx_v_i;
                    __pyx_t_188 = __pyx_v_j;
                    __pyx_t_189 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2725:                                         a[k] = 1
                    __pyx_t_190 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_190, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+2726:                 if a[k] == 0:
        __pyx_t_98 = __pyx_v_k;
        __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
        if (__pyx_t_24) {
/* … */
        }
+2727:                     win = rmax
          __pyx_v_win = __pyx_v_rmax;
+2728:                     xmin = max(0, xo - win)
          __pyx_t_99 = (__pyx_v_xo - __pyx_v_win);
          __pyx_t_191 = 0;
          if (((__pyx_t_99 > __pyx_t_191) != 0)) {
            __pyx_t_100 = __pyx_t_99;
          } else {
            __pyx_t_100 = __pyx_t_191;
          }
          __pyx_v_xmin = __pyx_t_100;
+2729:                     xmax = min(m - 1, xo + win)
          __pyx_t_100 = (__pyx_v_xo + __pyx_v_win);
          __pyx_t_99 = (__pyx_v_m - 1);
          if (((__pyx_t_100 < __pyx_t_99) != 0)) {
            __pyx_t_101 = __pyx_t_100;
          } else {
            __pyx_t_101 = __pyx_t_99;
          }
          __pyx_v_xmax = __pyx_t_101;
+2730:                     ymin = max(0, yo - win)
          __pyx_t_101 = (__pyx_v_yo - __pyx_v_win);
          __pyx_t_191 = 0;
          if (((__pyx_t_101 > __pyx_t_191) != 0)) {
            __pyx_t_100 = __pyx_t_101;
          } else {
            __pyx_t_100 = __pyx_t_191;
          }
          __pyx_v_ymin = __pyx_t_100;
+2731:                     ymax = min(n - 1, yo + win)
          __pyx_t_100 = (__pyx_v_yo + __pyx_v_win);
          __pyx_t_101 = (__pyx_v_n - 1);
          if (((__pyx_t_100 < __pyx_t_101) != 0)) {
            __pyx_t_99 = __pyx_t_100;
          } else {
            __pyx_t_99 = __pyx_t_101;
          }
          __pyx_v_ymax = __pyx_t_99;
+2732:                     a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
          __pyx_t_99 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 2733: 
+2734:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+2735:         nnz = cv2.countNonZero(I)
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_25);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_25, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_25, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2735, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2735, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2735, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __pyx_t_78 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_78 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2735, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_nnz = __pyx_t_78;
  }
 2736: 
 2737: 
+2738:     obj.p = p
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_1) < 0) __PYX_ERR(0, 2738, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2739:     toc = time.time()
  __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_25 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_25)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_25) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2739, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2739, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2739, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_toc = __pyx_t_23;
+2740:     obj.exetime = toc - tic
  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_1) < 0) __PYX_ERR(0, 2740, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2741:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_delete); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_arange); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_34);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_34, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_192 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_192)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_192);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_192, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_192, 0+__pyx_t_27, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_192, 1+__pyx_t_27, __pyx_t_7);
  __pyx_t_8 = 0;
  __pyx_t_7 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_192, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_192); __pyx_t_192 = 0;
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_34 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
    __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_25);
    if (likely(__pyx_t_34)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_34);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_25, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_192 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_192)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_192);
  if (__pyx_t_34) {
    __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_192, 0, __pyx_t_34); __pyx_t_34 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_192, 0+__pyx_t_27, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_192, 1+__pyx_t_27, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_192, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_192); __pyx_t_192 = 0;
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_1) < 0) __PYX_ERR(0, 2741, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2742:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __pyx_t_192 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_delete); if (unlikely(!__pyx_t_192)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_192);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_arange); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_34);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_34, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_7);
  __pyx_t_6 = 0;
  __pyx_t_7 = 0;
  __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_5, NULL); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_34 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_192))) {
    __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_192);
    if (likely(__pyx_t_34)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_192);
      __Pyx_INCREF(__pyx_t_34);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_192, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_34) {
    __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_34); __pyx_t_34 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_25);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_25);
  __pyx_t_25 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_192, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_192); __pyx_t_192 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_1) < 0) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2743:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 2743, __pyx_L1_error)
+2744:     obj.gr2DVal = gr2DVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_gr2DVal, ((PyObject *)__pyx_v_gr2DVal)) < 0) __PYX_ERR(0, 2744, __pyx_L1_error)
+2745:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 2745, __pyx_L1_error)
 2746: 
+2747:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 2748: 
+2749: def Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_29Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_29Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot = {"Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot", (PyCFunction)__pyx_pw_9libEVOLVE_29Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_29Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_28Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_28Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_R;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_MAJceil;
  PY_LONG_LONG __pyx_v_MINceil;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_MAJ;
  float __pyx_v_MIN;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_24);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__39 = PyTuple_Pack(46, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_R, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_k, __pyx_n_s_Io, __pyx_n_s_MAJceil, __pyx_n_s_MINceil, __pyx_n_s_Iter, __pyx_n_s_MAJ, __pyx_n_s_MIN, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Col, __pyx_n_s_col, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 2749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__39);
  __Pyx_GIVEREF(__pyx_tuple__39);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_29Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_without_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_5, __pyx_t_2) < 0) __PYX_ERR(0, 2749, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 46, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_5, 2749, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 2749, __pyx_L1_error)
 2750:     # Grabbing data from the input object
+2751:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2751, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+2752:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2752, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+2753:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2753, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+2754:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2754, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+2755:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2755, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+2756:     cdef float R = obj.R
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_R); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2756, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_R = __pyx_t_3;
+2757:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2757, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_4;
+2758:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2758, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_4;
+2759:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+2760:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2760, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+2761:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+2762:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
 2763: 
 2764:     # Declaring other variables
 2765:     cdef double tic, toc
 2766:     cdef long long i, j, deli, delj, xo, yo, PN, PE, PW, PS , k, Io, MAJceil, MINceil, Iter
 2767:     cdef float MAJ, MIN, red, green, blue
+2768:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2768, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2768, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2769:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2769, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2769, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2770:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2770, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2770, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2770, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+2771:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2771, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2771, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2771, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2772:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2772, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2772, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+2773:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2773, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2773, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2774:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2774, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2774, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+2775:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2775, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2776:     col = np.random.random((p, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2776, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2776, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2776, __pyx_L1_error)
  }
  __pyx_t_15 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_5));
  __pyx_t_5 = 0;
+2777:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2777, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2777, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_19 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_19 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2777, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_tic = __pyx_t_19;
 2778: 
+2779:     if pdelNxy == []:
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2779, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_20 < 0)) __PYX_ERR(0, 2779, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__pyx_t_20) {
/* … */
    goto __pyx_L3;
  }
+2780:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_8 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2780, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) {
      PyObject* sequence = __pyx_t_8;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 2780, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2780, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2780, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2780, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_21 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_5 = __pyx_t_21(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 1; __pyx_t_6 = __pyx_t_21(__pyx_t_1); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_21(__pyx_t_1), 2) < 0) __PYX_ERR(0, 2780, __pyx_L1_error)
      __pyx_t_21 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_21 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 2780, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2780, __pyx_L1_error)
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2780, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2780, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2780, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;
 2781:     else:
+2782:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_22 = NULL;
    __pyx_t_23 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_22)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_22);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_23 = 1;
      }
    }
    __pyx_t_24 = PyTuple_New(7+__pyx_t_23); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_24);
    if (__pyx_t_22) {
      __Pyx_GIVEREF(__pyx_t_22); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_22); __pyx_t_22 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_24, 0+__pyx_t_23, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_24, 1+__pyx_t_23, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_24, 2+__pyx_t_23, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_24, 3+__pyx_t_23, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_24, 4+__pyx_t_23, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_24, 5+__pyx_t_23, __pyx_t_7);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_24, 6+__pyx_t_23, __pyx_int_1);
    __pyx_t_6 = 0;
    __pyx_t_1 = 0;
    __pyx_t_7 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_24, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) {
      PyObject* sequence = __pyx_t_8;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 2782, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_24 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_24 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_24);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2782, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_24 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2782, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_24);
      #endif
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2782, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_21 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_5 = __pyx_t_21(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 1; __pyx_t_24 = __pyx_t_21(__pyx_t_7); if (unlikely(!__pyx_t_24)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_24);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_21(__pyx_t_7), 2) < 0) __PYX_ERR(0, 2782, __pyx_L1_error)
      __pyx_t_21 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_21 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 2782, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2782, __pyx_L1_error)
    if (!(likely(((__pyx_t_24) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_24, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2782, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2782, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_24);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2782, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_24));
    __pyx_t_24 = 0;
  }
  __pyx_L3:;
 2783: 
+2784:     if labelsorted == 1:
  __pyx_t_20 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_20) {
/* … */
  }
+2785:         X, Y = labelsort(n, X, Y)
    __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2785, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_24);
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2785, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = NULL;
    __pyx_t_23 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_24))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_24);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_24);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_24, function);
        __pyx_t_23 = 1;
      }
    }
    __pyx_t_1 = PyTuple_New(3+__pyx_t_23); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2785, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_23, __pyx_t_5);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_23, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_23, ((PyObject *)__pyx_v_Y));
    __pyx_t_5 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_24, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2785, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) {
      PyObject* sequence = __pyx_t_8;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 2785, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_24 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_24 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_24);
      __Pyx_INCREF(__pyx_t_1);
      #else
      __pyx_t_24 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2785, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_24);
      __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2785, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      #endif
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_5 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2785, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_21 = Py_TYPE(__pyx_t_5)->tp_iternext;
      index = 0; __pyx_t_24 = __pyx_t_21(__pyx_t_5); if (unlikely(!__pyx_t_24)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_24);
      index = 1; __pyx_t_1 = __pyx_t_21(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_21(__pyx_t_5), 2) < 0) __PYX_ERR(0, 2785, __pyx_L1_error)
      __pyx_t_21 = NULL;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_21 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 2785, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_24) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_24, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2785, __pyx_L1_error)
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2785, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_24);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2785, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_24));
    __pyx_t_24 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2785, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;
+2786:     MAJceil = 0
  __pyx_v_MAJceil = 0;
 2787: 
+2788:     Iter = 1
  __pyx_v_Iter = 1;
+2789:     while True:
  while (1) {
+2790:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_25 = 0; __pyx_t_25 < __pyx_t_2; __pyx_t_25+=1) {
      __pyx_v_k = __pyx_t_25;
+2791:             I[X[k], Y[k]] = k + 1
      __pyx_t_26 = __pyx_v_k;
      __pyx_t_27 = __pyx_v_k;
      __pyx_t_28 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_26, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_29, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+2792:             Col[X[k], Y[k], 2] = col[k, 0]
      __pyx_t_30 = __pyx_v_k;
      __pyx_t_31 = 0;
      __pyx_t_32 = __pyx_v_k;
      __pyx_t_33 = __pyx_v_k;
      __pyx_t_34 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_35 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_36 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_35, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_36, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_31, __pyx_pybuffernd_col.diminfo[1].strides));
+2793:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_37 = __pyx_v_k;
      __pyx_t_38 = 1;
      __pyx_t_39 = __pyx_v_k;
      __pyx_t_40 = __pyx_v_k;
      __pyx_t_41 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_42 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_43 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_43, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_col.diminfo[1].strides));
+2794:             Col[X[k], Y[k], 0] = col[k, 2]
      __pyx_t_44 = __pyx_v_k;
      __pyx_t_45 = 2;
      __pyx_t_46 = __pyx_v_k;
      __pyx_t_47 = __pyx_v_k;
      __pyx_t_48 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_49 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_50 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_col.diminfo[1].strides));
    }
 2795: 
+2796:         showriteframe(sa, sf, fd, MAJceil, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_MAJceil, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
 2797: 
+2798:         MAJ = 1.0
    __pyx_v_MAJ = 1.0;
+2799:         MIN = MAJ / R
    __pyx_v_MIN = (__pyx_v_MAJ / __pyx_v_R);
 2800: 
 2801: 
+2802:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2802, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2802, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_24);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_24))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_24);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_24);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_24, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_24, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2802, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2802, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_24, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2802, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
      __pyx_t_24 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_24); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2802, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_24); if (unlikely(__pyx_t_20 < 0)) __PYX_ERR(0, 2802, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
      if (!__pyx_t_20) break;
+2803:             MAJceil = math.ceil(MAJ)
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2803, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ceil); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2803, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = PyFloat_FromDouble(__pyx_v_MAJ); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2803, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_24 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2803, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_24);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2803, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_24 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2803, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_24);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_24); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2803, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
      __pyx_v_MAJceil = __pyx_t_2;
+2804:             MINceil = math.ceil(MIN)
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyFloat_FromDouble(__pyx_v_MIN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (!__pyx_t_8) {
        __pyx_t_24 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2804, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_24);
      } else {
        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2804, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_24 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2804, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_24);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_24); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2804, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
      __pyx_v_MINceil = __pyx_t_2;
+2805:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_25 = 0; __pyx_t_25 < __pyx_t_2; __pyx_t_25+=1) {
        __pyx_v_k = __pyx_t_25;
+2806:                 if a[k] == 1:
        __pyx_t_51 = __pyx_v_k;
        __pyx_t_20 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_20) {
/* … */
        }
      }
+2807:                     a[k] = 0
          __pyx_t_52 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+2808:                     xo = X[k]
          __pyx_t_53 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_X.diminfo[0].strides));
+2809:                     yo = Y[k]
          __pyx_t_54 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_Y.diminfo[0].strides));
+2810:                     Io = I[xo, yo]
          __pyx_t_55 = __pyx_v_xo;
          __pyx_t_56 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_56, __pyx_pybuffernd_I.diminfo[1].strides));
+2811:                     red = col[k, 0]
          __pyx_t_57 = __pyx_v_k;
          __pyx_t_58 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_58, __pyx_pybuffernd_col.diminfo[1].strides));
+2812:                     green = col[k, 1]
          __pyx_t_59 = __pyx_v_k;
          __pyx_t_60 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_60, __pyx_pybuffernd_col.diminfo[1].strides));
+2813:                     blue = col[k, 2]
          __pyx_t_61 = __pyx_v_k;
          __pyx_t_62 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_62, __pyx_pybuffernd_col.diminfo[1].strides));
 2814: 
+2815:                     for deli in range(MAJceil + 1):
          __pyx_t_63 = (__pyx_v_MAJceil + 1);
          for (__pyx_t_64 = 0; __pyx_t_64 < __pyx_t_63; __pyx_t_64+=1) {
            __pyx_v_deli = __pyx_t_64;
+2816:                         for delj in range(MINceil + 1):
            __pyx_t_65 = (__pyx_v_MINceil + 1);
            for (__pyx_t_66 = 0; __pyx_t_66 < __pyx_t_65; __pyx_t_66+=1) {
              __pyx_v_delj = __pyx_t_66;
+2817:                             if (deli / MAJ) ** 2 + (delj / MIN) ** 2 <= 1:
              __pyx_t_20 = (((powf((((float)__pyx_v_deli) / __pyx_v_MAJ), 2.0) + powf((((float)__pyx_v_delj) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_20) {
/* … */
              }
            }
          }
 2818: 
+2819:                                 i, j = xo + deli, yo + delj
                __pyx_t_67 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_68 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_67;
                __pyx_v_j = __pyx_t_68;
+2820:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_69 = (0 <= __pyx_v_i);
                if (__pyx_t_69) {
                  __pyx_t_69 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_70 = (__pyx_t_69 != 0);
                if (__pyx_t_70) {
                } else {
                  __pyx_t_20 = __pyx_t_70;
                  goto __pyx_L26_bool_binop_done;
                }
                __pyx_t_70 = (0 <= __pyx_v_j);
                if (__pyx_t_70) {
                  __pyx_t_70 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_69 = (__pyx_t_70 != 0);
                __pyx_t_20 = __pyx_t_69;
                __pyx_L26_bool_binop_done:;
                if (__pyx_t_20) {
/* … */
                }
+2821:                                     if I[i, j] == 0:
                  __pyx_t_68 = __pyx_v_i;
                  __pyx_t_67 = __pyx_v_j;
                  __pyx_t_20 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_67, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_20) {
/* … */
                  }
+2822:                                         if i > 0:
                    __pyx_t_20 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_20) {
/* … */
                      goto __pyx_L29;
                    }
+2823:                                             PN = I[i - 1, j]
                      __pyx_t_71 = (__pyx_v_i - 1);
                      __pyx_t_72 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_I.diminfo[1].strides));
 2824:                                         else:
+2825:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L29:;
+2826:                                         if j > 0:
                    __pyx_t_20 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_20) {
/* … */
                      goto __pyx_L30;
                    }
+2827:                                             PW = I[i, j - 1]
                      __pyx_t_73 = __pyx_v_i;
                      __pyx_t_74 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_I.diminfo[1].strides));
 2828:                                         else:
+2829:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L30:;
+2830:                                         if PN == Io or PW == Io:
                    __pyx_t_69 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_69) {
                    } else {
                      __pyx_t_20 = __pyx_t_69;
                      goto __pyx_L32_bool_binop_done;
                    }
                    __pyx_t_69 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    __pyx_t_20 = __pyx_t_69;
                    __pyx_L32_bool_binop_done:;
                    if (__pyx_t_20) {
/* … */
                    }
+2831:                                             I[i, j] = Io
                      __pyx_t_75 = __pyx_v_i;
                      __pyx_t_76 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_76, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2832:                                             Col[i, j, 2] = red
                      __pyx_t_77 = __pyx_v_i;
                      __pyx_t_78 = __pyx_v_j;
                      __pyx_t_79 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2833:                                             Col[i, j, 1] = green
                      __pyx_t_80 = __pyx_v_i;
                      __pyx_t_81 = __pyx_v_j;
                      __pyx_t_82 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_81, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_82, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2834:                                             Col[i, j, 0] = blue
                      __pyx_t_83 = __pyx_v_i;
                      __pyx_t_84 = __pyx_v_j;
                      __pyx_t_85 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_84, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_85, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2835:                                             a[k] = 1
                      __pyx_t_86 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2836: 
+2837:                                 i, j = xo - deli, yo + delj
                __pyx_t_87 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_88 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_87;
                __pyx_v_j = __pyx_t_88;
+2838:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_69 = (0 <= __pyx_v_i);
                if (__pyx_t_69) {
                  __pyx_t_69 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_70 = (__pyx_t_69 != 0);
                if (__pyx_t_70) {
                } else {
                  __pyx_t_20 = __pyx_t_70;
                  goto __pyx_L35_bool_binop_done;
                }
                __pyx_t_70 = (0 <= __pyx_v_j);
                if (__pyx_t_70) {
                  __pyx_t_70 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_69 = (__pyx_t_70 != 0);
                __pyx_t_20 = __pyx_t_69;
                __pyx_L35_bool_binop_done:;
                if (__pyx_t_20) {
/* … */
                }
+2839:                                     if I[i, j] == 0:
                  __pyx_t_88 = __pyx_v_i;
                  __pyx_t_87 = __pyx_v_j;
                  __pyx_t_20 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_87, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_20) {
/* … */
                  }
+2840:                                         if i < m - 1:
                    __pyx_t_20 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_20) {
/* … */
                      goto __pyx_L38;
                    }
+2841:                                             PS = I[i + 1, j]
                      __pyx_t_89 = (__pyx_v_i + 1);
                      __pyx_t_90 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_90, __pyx_pybuffernd_I.diminfo[1].strides));
 2842:                                         else:
+2843:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L38:;
+2844:                                         if j > 0:
                    __pyx_t_20 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_20) {
/* … */
                      goto __pyx_L39;
                    }
+2845:                                             PW = I[i, j - 1]
                      __pyx_t_91 = __pyx_v_i;
                      __pyx_t_92 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_92, __pyx_pybuffernd_I.diminfo[1].strides));
 2846:                                         else:
+2847:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L39:;
+2848:                                         if PW == Io or PS == Io:
                    __pyx_t_69 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_69) {
                    } else {
                      __pyx_t_20 = __pyx_t_69;
                      goto __pyx_L41_bool_binop_done;
                    }
                    __pyx_t_69 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_20 = __pyx_t_69;
                    __pyx_L41_bool_binop_done:;
                    if (__pyx_t_20) {
/* … */
                    }
+2849:                                             I[i, j] = Io
                      __pyx_t_93 = __pyx_v_i;
                      __pyx_t_94 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2850:                                             Col[i, j, 2] = red
                      __pyx_t_95 = __pyx_v_i;
                      __pyx_t_96 = __pyx_v_j;
                      __pyx_t_97 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_96, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_97, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2851:                                             Col[i, j, 1] = green
                      __pyx_t_98 = __pyx_v_i;
                      __pyx_t_99 = __pyx_v_j;
                      __pyx_t_100 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2852:                                             Col[i, j, 0] = blue
                      __pyx_t_101 = __pyx_v_i;
                      __pyx_t_102 = __pyx_v_j;
                      __pyx_t_103 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_103, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2853:                                             a[k] = 1
                      __pyx_t_104 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2854: 
+2855:                                 i, j = xo - deli, yo - delj
                __pyx_t_105 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_106 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_105;
                __pyx_v_j = __pyx_t_106;
+2856:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_69 = (0 <= __pyx_v_i);
                if (__pyx_t_69) {
                  __pyx_t_69 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_70 = (__pyx_t_69 != 0);
                if (__pyx_t_70) {
                } else {
                  __pyx_t_20 = __pyx_t_70;
                  goto __pyx_L44_bool_binop_done;
                }
                __pyx_t_70 = (0 <= __pyx_v_j);
                if (__pyx_t_70) {
                  __pyx_t_70 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_69 = (__pyx_t_70 != 0);
                __pyx_t_20 = __pyx_t_69;
                __pyx_L44_bool_binop_done:;
                if (__pyx_t_20) {
/* … */
                }
+2857:                                     if I[i, j] == 0:
                  __pyx_t_106 = __pyx_v_i;
                  __pyx_t_105 = __pyx_v_j;
                  __pyx_t_20 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_105, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_20) {
/* … */
                  }
+2858:                                         if i < m - 1:
                    __pyx_t_20 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_20) {
/* … */
                      goto __pyx_L47;
                    }
+2859:                                             PS = I[i + 1, j]
                      __pyx_t_107 = (__pyx_v_i + 1);
                      __pyx_t_108 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_I.diminfo[1].strides));
 2860:                                         else:
+2861:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L47:;
+2862:                                         if j < n - 1:
                    __pyx_t_20 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_20) {
/* … */
                      goto __pyx_L48;
                    }
+2863:                                             PE = I[i, j + 1]
                      __pyx_t_109 = __pyx_v_i;
                      __pyx_t_110 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_I.diminfo[1].strides));
 2864:                                         else:
+2865:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L48:;
+2866:                                         if PE == Io or PS == Io:
                    __pyx_t_69 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_69) {
                    } else {
                      __pyx_t_20 = __pyx_t_69;
                      goto __pyx_L50_bool_binop_done;
                    }
                    __pyx_t_69 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_20 = __pyx_t_69;
                    __pyx_L50_bool_binop_done:;
                    if (__pyx_t_20) {
/* … */
                    }
+2867:                                             I[i, j] = Io
                      __pyx_t_111 = __pyx_v_i;
                      __pyx_t_112 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2868:                                             Col[i, j, 2] = red
                      __pyx_t_113 = __pyx_v_i;
                      __pyx_t_114 = __pyx_v_j;
                      __pyx_t_115 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2869:                                             Col[i, j, 1] = green
                      __pyx_t_116 = __pyx_v_i;
                      __pyx_t_117 = __pyx_v_j;
                      __pyx_t_118 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2870:                                             Col[i, j, 0] = blue
                      __pyx_t_119 = __pyx_v_i;
                      __pyx_t_120 = __pyx_v_j;
                      __pyx_t_121 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2871:                                             a[k] = 1
                      __pyx_t_122 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2872: 
+2873:                                 i, j = xo + deli, yo - delj
                __pyx_t_123 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_124 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_123;
                __pyx_v_j = __pyx_t_124;
+2874:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_69 = (0 <= __pyx_v_i);
                if (__pyx_t_69) {
                  __pyx_t_69 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_70 = (__pyx_t_69 != 0);
                if (__pyx_t_70) {
                } else {
                  __pyx_t_20 = __pyx_t_70;
                  goto __pyx_L53_bool_binop_done;
                }
                __pyx_t_70 = (0 <= __pyx_v_j);
                if (__pyx_t_70) {
                  __pyx_t_70 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_69 = (__pyx_t_70 != 0);
                __pyx_t_20 = __pyx_t_69;
                __pyx_L53_bool_binop_done:;
                if (__pyx_t_20) {
/* … */
                }
+2875:                                     if I[i, j] == 0:
                  __pyx_t_124 = __pyx_v_i;
                  __pyx_t_123 = __pyx_v_j;
                  __pyx_t_20 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_123, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_20) {
/* … */
                  }
+2876:                                         if i > 0:
                    __pyx_t_20 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_20) {
/* … */
                      goto __pyx_L56;
                    }
+2877:                                             PN = I[i - 1, j]
                      __pyx_t_125 = (__pyx_v_i - 1);
                      __pyx_t_126 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_125, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_126, __pyx_pybuffernd_I.diminfo[1].strides));
 2878:                                         else:
+2879:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L56:;
+2880:                                         if j < n - 1:
                    __pyx_t_20 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_20) {
/* … */
                      goto __pyx_L57;
                    }
+2881:                                             PE = I[i, j + 1]
                      __pyx_t_127 = __pyx_v_i;
                      __pyx_t_128 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_I.diminfo[1].strides));
 2882:                                         else:
+2883:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L57:;
+2884:                                         if PN == Io or PE == Io:
                    __pyx_t_69 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_69) {
                    } else {
                      __pyx_t_20 = __pyx_t_69;
                      goto __pyx_L59_bool_binop_done;
                    }
                    __pyx_t_69 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    __pyx_t_20 = __pyx_t_69;
                    __pyx_L59_bool_binop_done:;
                    if (__pyx_t_20) {
/* … */
                    }
+2885:                                             I[i, j] = Io
                      __pyx_t_129 = __pyx_v_i;
                      __pyx_t_130 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+2886:                                             Col[i, j, 2] = red
                      __pyx_t_131 = __pyx_v_i;
                      __pyx_t_132 = __pyx_v_j;
                      __pyx_t_133 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+2887:                                             Col[i, j, 1] = green
                      __pyx_t_134 = __pyx_v_i;
                      __pyx_t_135 = __pyx_v_j;
                      __pyx_t_136 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_135, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_136, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+2888:                                             Col[i, j, 0] = blue
                      __pyx_t_137 = __pyx_v_i;
                      __pyx_t_138 = __pyx_v_j;
                      __pyx_t_139 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+2889:                                             a[k] = 1
                      __pyx_t_140 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 2890: 
+2891:                     if a[k] == 0:
          __pyx_t_63 = __pyx_v_k;
          __pyx_t_20 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_20) {
/* … */
          }
+2892:                         xmin = max(0, xo - MAJceil)
            __pyx_t_64 = (__pyx_v_xo - __pyx_v_MAJceil);
            __pyx_t_141 = 0;
            if (((__pyx_t_64 > __pyx_t_141) != 0)) {
              __pyx_t_65 = __pyx_t_64;
            } else {
              __pyx_t_65 = __pyx_t_141;
            }
            __pyx_v_xmin = __pyx_t_65;
+2893:                         xmax = min(m - 1, xo + MAJceil)
            __pyx_t_65 = (__pyx_v_xo + __pyx_v_MAJceil);
            __pyx_t_64 = (__pyx_v_m - 1);
            if (((__pyx_t_65 < __pyx_t_64) != 0)) {
              __pyx_t_66 = __pyx_t_65;
            } else {
              __pyx_t_66 = __pyx_t_64;
            }
            __pyx_v_xmax = __pyx_t_66;
+2894:                         ymin = max(0, yo - MINceil)
            __pyx_t_66 = (__pyx_v_yo - __pyx_v_MINceil);
            __pyx_t_141 = 0;
            if (((__pyx_t_66 > __pyx_t_141) != 0)) {
              __pyx_t_65 = __pyx_t_66;
            } else {
              __pyx_t_65 = __pyx_t_141;
            }
            __pyx_v_ymin = __pyx_t_65;
+2895:                         ymax = min(n - 1, yo + MINceil)
            __pyx_t_65 = (__pyx_v_yo + __pyx_v_MINceil);
            __pyx_t_66 = (__pyx_v_n - 1);
            if (((__pyx_t_65 < __pyx_t_66) != 0)) {
              __pyx_t_64 = __pyx_t_65;
            } else {
              __pyx_t_64 = __pyx_t_66;
            }
            __pyx_v_ymax = __pyx_t_64;
+2896:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_64 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 2897: 
+2898:             showriteframe(sa, sf, fd, MAJceil, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_MAJceil, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+2899:             MAJ = MAJ + 1.0
      __pyx_v_MAJ = (__pyx_v_MAJ + 1.0);
+2900:             MIN = MAJ / R
      __pyx_v_MIN = (__pyx_v_MAJ / __pyx_v_R);
    }
+2901:         if asy == 0:
    __pyx_t_20 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_20) {
/* … */
    }
+2902:             break
      goto __pyx_L12_break;
 2903:         else:
+2904:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_7 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2904, __pyx_L1_error)
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_all); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2904, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_24 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2904, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_24 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2904, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_24);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_24, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2904, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
      __pyx_t_20 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_20 < 0)) __PYX_ERR(0, 2904, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_20) {
/* … */
      }
+2905:                 break
        goto __pyx_L12_break;
 2906:             else:
+2907:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2907, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+2908:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_24);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_7);
        __pyx_t_1 = 0;
        __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_24, __pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2908, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2908, __pyx_L1_error)
        __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2908, __pyx_L1_error)
        }
        __pyx_t_9 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_8));
        __pyx_t_8 = 0;
+2909:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2909, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ones); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2909, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2909, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2909, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2909, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2909, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_24);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_24, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2909, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
        if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2909, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2909, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2909, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2909, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_1));
        __pyx_t_1 = 0;
+2910:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2910, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_centroids); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2910, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2910, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2910, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2910, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_24);
        __pyx_t_6 = NULL;
        __pyx_t_23 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_23 = 1;
          }
        }
        __pyx_t_22 = PyTuple_New(4+__pyx_t_23); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2910, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_22);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_22, 0+__pyx_t_23, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_22, 1+__pyx_t_23, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_22, 2+__pyx_t_23, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_24);
        PyTuple_SET_ITEM(__pyx_t_22, 3+__pyx_t_23, __pyx_t_24);
        __pyx_t_8 = 0;
        __pyx_t_5 = 0;
        __pyx_t_24 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2910, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
          PyObject* sequence = __pyx_t_1;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 2910, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_22 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_22 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_22);
          #else
          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2910, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_22 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2910, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_22);
          #endif
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_24 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2910, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_24);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_21 = Py_TYPE(__pyx_t_24)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_21(__pyx_t_24); if (unlikely(!__pyx_t_7)) goto __pyx_L64_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_22 = __pyx_t_21(__pyx_t_24); if (unlikely(!__pyx_t_22)) goto __pyx_L64_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_22);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_21(__pyx_t_24), 2) < 0) __PYX_ERR(0, 2910, __pyx_L1_error)
          __pyx_t_21 = NULL;
          __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
          goto __pyx_L65_unpacking_done;
          __pyx_L64_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
          __pyx_t_21 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 2910, __pyx_L1_error)
          __pyx_L65_unpacking_done:;
        }
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2910, __pyx_L1_error)
        if (!(likely(((__pyx_t_22) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_22, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2910, __pyx_L1_error)
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2910, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_22);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2910, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_22));
        __pyx_t_22 = 0;
+2911:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 2912: 
+2913:     toc = time.time()
  __pyx_t_22 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_22, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
  __pyx_t_22 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_22)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_22);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_22) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_22); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2913, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2913, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_19 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_19 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2913, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_toc = __pyx_t_19;
+2914:     obj.exetime = toc - tic
  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_1) < 0) __PYX_ERR(0, 2914, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2915:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 2915, __pyx_L1_error)
+2916:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 2916, __pyx_L1_error)
+2917:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 2917, __pyx_L1_error)
+2918:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 2918, __pyx_L1_error)
+2919:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 2920: 
+2921: def Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_31Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_31Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot = {"Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot", (PyCFunction)__pyx_pw_9libEVOLVE_31Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_31Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_30Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_30Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Rfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_l1;
  PY_LONG_LONG __pyx_v_l2;
  PY_LONG_LONG __pyx_v_imax;
  PY_LONG_LONG __pyx_v_imin;
  PY_LONG_LONG __pyx_v_jmax;
  PY_LONG_LONG __pyx_v_jmin;
  PY_LONG_LONG __pyx_v_io;
  PY_LONG_LONG __pyx_v_jo;
  PY_LONG_LONG __pyx_v_go;
  PY_LONG_LONG __pyx_v_found;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_MAJceil;
  PY_LONG_LONG __pyx_v_MINceil;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_MAJ;
  float __pyx_v_MIN;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_II = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Rval = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_II;
  __Pyx_Buffer __pyx_pybuffer_II;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Rval;
  __Pyx_Buffer __pyx_pybuffer_Rval;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_II.pybuffer.buf = NULL;
  __pyx_pybuffer_II.refcount = 0;
  __pyx_pybuffernd_II.data = NULL;
  __pyx_pybuffernd_II.rcbuffer = &__pyx_pybuffer_II;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Rval.pybuffer.buf = NULL;
  __pyx_pybuffer_Rval.refcount = 0;
  __pyx_pybuffernd_Rval.data = NULL;
  __pyx_pybuffernd_Rval.rcbuffer = &__pyx_pybuffer_Rval;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_25);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Rfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_II);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Rval);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__41 = PyTuple_Pack(62, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Rfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_dum, __pyx_n_s_count, __pyx_n_s_l, __pyx_n_s_l1, __pyx_n_s_l2, __pyx_n_s_imax, __pyx_n_s_imin, __pyx_n_s_jmax, __pyx_n_s_jmin, __pyx_n_s_io, __pyx_n_s_jo, __pyx_n_s_go, __pyx_n_s_found, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_MAJceil, __pyx_n_s_MINceil, __pyx_n_s_Iter, __pyx_n_s_MAJ, __pyx_n_s_MIN, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_II, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Rval, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 2921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__41);
  __Pyx_GIVEREF(__pyx_tuple__41);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_31Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_without_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_6, __pyx_t_2) < 0) __PYX_ERR(0, 2921, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(1, 0, 62, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_6, 2921, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 2921, __pyx_L1_error)
 2922:     # Grabbing data from the input object
+2923:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2923, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+2924:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2924, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+2925:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2925, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+2926:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2926, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+2927:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2927, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+2928:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2928, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+2929:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2929, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_3;
+2930:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2930, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_3;
+2931:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2931, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_3;
+2932:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+2933:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+2934:     Rfunc = obj.Rfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Rfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Rfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 2935: 
 2936:     # Declaring other variables
 2937:     cdef double tic, toc
 2938:     cdef long long deli, delj, PN, PE, PW, PS, Io, win, xmin, xmax, ymin, ymax, dum, count, l, l1 , l2, imax, imin, jmax, jmin, io, jo, go, found, i, j, k, xo, yo, MAJceil, MINceil, Iter
 2939:     cdef float MAJ, MIN, red, green, blue
+2940:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2940, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2940, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2941:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2941, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2941, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2942:     cdef np.ndarray[np.int64_t, ndim = 2] II = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2942, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_II.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_II = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_II.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2942, __pyx_L1_error)
    } else {__pyx_pybuffernd_II.diminfo[0].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_II.diminfo[0].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_II.diminfo[1].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_II.diminfo[1].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_II = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2943:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2943, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2943, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2943, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2944:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2944, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2944, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2945:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 2945, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2945, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2945, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+2946:     cdef np.ndarray[np.int64_t, ndim = 1] Rval = np.zeros(p, dtype=np.int64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2946, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2946, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Rval = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2946, __pyx_L1_error)
    } else {__pyx_pybuffernd_Rval.diminfo[0].strides = __pyx_pybuffernd_Rval.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Rval.diminfo[0].shape = __pyx_pybuffernd_Rval.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_Rval = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2947:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2947, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2947, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2948:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2948, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 2948, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+2949:     plantseed(myseed)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2949, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2949, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2949, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2950:     col = np.random.random((p, 3))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2950, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2950, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2950, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2950, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2950, __pyx_L1_error)
  }
  __pyx_t_16 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_7));
  __pyx_t_7 = 0;
+2951:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2951, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2951, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2951, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_tic = __pyx_t_20;
 2952: 
+2953:     if pdelNxy == []:
  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2953, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 2953, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_21) {
/* … */
    goto __pyx_L3;
  }
+2954:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_4 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2954, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 2954, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2954, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2954, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2954, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_5 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_1), 2) < 0) __PYX_ERR(0, 2954, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 2954, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2954, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2954, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2954, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
    __pyx_t_7 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2954, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 2955:     else:
+2956:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2956, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2956, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2956, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2956, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2956, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_23 = NULL;
    __pyx_t_24 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_23)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_23);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_24 = 1;
      }
    }
    __pyx_t_25 = PyTuple_New(7+__pyx_t_24); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2956, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    if (__pyx_t_23) {
      __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_23); __pyx_t_23 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_24, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_24, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_24, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_24, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_24, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_25, 5+__pyx_t_24, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_25, 6+__pyx_t_24, __pyx_int_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_25, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2956, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 2956, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_25 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_25 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_25);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2956, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_25 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2956, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2956, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_22(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_25 = __pyx_t_22(__pyx_t_6); if (unlikely(!__pyx_t_25)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_25);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_6), 2) < 0) __PYX_ERR(0, 2956, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 2956, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2956, __pyx_L1_error)
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2956, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2956, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
    __pyx_t_7 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2956, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
  }
  __pyx_L3:;
 2957: 
+2958:     if labelsorted == 1:
  __pyx_t_21 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_21) {
/* … */
  }
+2959:         X, Y = labelsort(n, X, Y)
    __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_24 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_25);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_25, function);
        __pyx_t_24 = 1;
      }
    }
    __pyx_t_1 = PyTuple_New(3+__pyx_t_24); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_24, __pyx_t_7);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_24, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_24, ((PyObject *)__pyx_v_Y));
    __pyx_t_7 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 2959, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_25 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_25 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_1);
      #else
      __pyx_t_25 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2959, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2959, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2959, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_25 = __pyx_t_22(__pyx_t_7); if (unlikely(!__pyx_t_25)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_25);
      index = 1; __pyx_t_1 = __pyx_t_22(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_7), 2) < 0) __PYX_ERR(0, 2959, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 2959, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2959, __pyx_L1_error)
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2959, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2959, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2959, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;
 2960: 
+2961:     Iter = 1
  __pyx_v_Iter = 1;
 2962: 
+2963:     while True:
  while (1) {
 2964: 
+2965:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
      __pyx_v_k = __pyx_t_26;
+2966:             I[X[k], Y[k]] = k + 1
      __pyx_t_27 = __pyx_v_k;
      __pyx_t_28 = __pyx_v_k;
      __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_30 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+2967:             Rval[k] = Rfunc(X[k], Y[k], k + 1, 1, 0)
      __pyx_t_31 = __pyx_v_k;
      __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_32 = __pyx_v_k;
      __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_Rfunc);
      __pyx_t_6 = __pyx_v_Rfunc; __pyx_t_5 = NULL;
      __pyx_t_24 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_24 = 1;
        }
      }
      __pyx_t_23 = PyTuple_New(5+__pyx_t_24); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_24, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_25);
      PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_24, __pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_23, 2+__pyx_t_24, __pyx_t_7);
      __Pyx_INCREF(__pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_t_23, 3+__pyx_t_24, __pyx_int_1);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_23, 4+__pyx_t_24, __pyx_int_0);
      __pyx_t_1 = 0;
      __pyx_t_25 = 0;
      __pyx_t_7 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_23, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_33 = __Pyx_PyInt_As_npy_int64(__pyx_t_4); if (unlikely((__pyx_t_33 == (npy_int64)-1) && PyErr_Occurred())) __PYX_ERR(0, 2967, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_34 = __pyx_v_k;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_33;
+2968:             Col[X[k], Y[k], 2] = col[k, 0]
      __pyx_t_35 = __pyx_v_k;
      __pyx_t_36 = 0;
      __pyx_t_37 = __pyx_v_k;
      __pyx_t_38 = __pyx_v_k;
      __pyx_t_33 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_39 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_40 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_col.diminfo[1].strides));
+2969:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_41 = __pyx_v_k;
      __pyx_t_42 = 1;
      __pyx_t_43 = __pyx_v_k;
      __pyx_t_44 = __pyx_v_k;
      __pyx_t_45 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_46 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_47 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_41, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_42, __pyx_pybuffernd_col.diminfo[1].strides));
+2970:             Col[X[k], Y[k], 0] = col[k, 2]
      __pyx_t_48 = __pyx_v_k;
      __pyx_t_49 = 2;
      __pyx_t_50 = __pyx_v_k;
      __pyx_t_51 = __pyx_v_k;
      __pyx_t_52 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_53 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_54 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_54, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_49, __pyx_pybuffernd_col.diminfo[1].strides));
    }
 2971: 
+2972:         showriteframe(sa, sf, fd, 0, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, 0, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+2973:         MAJ = 1.0
    __pyx_v_MAJ = 1.0;
 2974: 
+2975:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2975, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2975, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_23);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_23, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2975, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2975, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2975, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_23 = PyObject_RichCompare(__pyx_t_4, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2975, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_23); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 2975, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      if (!__pyx_t_21) break;
+2976:             MAJceil = math.ceil(MAJ)
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2976, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2976, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_MAJ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2976, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2976, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_23);
      } else {
        __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2976, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_25, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2976, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_23); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2976, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_v_MAJceil = __pyx_t_2;
+2977:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
        __pyx_v_k = __pyx_t_26;
+2978:                 if a[k] == 1:
        __pyx_t_55 = __pyx_v_k;
        __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_21) {
/* … */
        }
      }
+2979:                     a[k] = 0
          __pyx_t_56 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+2980:                     xo = X[k]
          __pyx_t_57 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_X.diminfo[0].strides));
+2981:                     yo = Y[k]
          __pyx_t_58 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_Y.diminfo[0].strides));
+2982:                     Io = I[xo, yo]
          __pyx_t_59 = __pyx_v_xo;
          __pyx_t_60 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_60, __pyx_pybuffernd_I.diminfo[1].strides));
 2983: 
+2984:                     MIN = MAJ / Rval[k]
          __pyx_t_61 = __pyx_v_k;
          __pyx_v_MIN = (__pyx_v_MAJ / ((float)(*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_Rval.diminfo[0].strides))));
+2985:                     MINceil = math.ceil(MIN)
          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2985, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ceil); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 2985, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = PyFloat_FromDouble(__pyx_v_MIN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2985, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_4 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_25);
            if (likely(__pyx_t_4)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
              __Pyx_INCREF(__pyx_t_4);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_25, function);
            }
          }
          if (!__pyx_t_4) {
            __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_25, __pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2985, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_GOTREF(__pyx_t_23);
          } else {
            __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2985, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_7);
            __pyx_t_7 = 0;
            __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_6, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2985, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          }
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_62 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_23); if (unlikely((__pyx_t_62 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 2985, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_v_MINceil = __pyx_t_62;
+2986:                     red = col[k, 0]
          __pyx_t_62 = __pyx_v_k;
          __pyx_t_63 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_col.diminfo[1].strides));
+2987:                     green = col[k, 1]
          __pyx_t_64 = __pyx_v_k;
          __pyx_t_65 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_65, __pyx_pybuffernd_col.diminfo[1].strides));
+2988:                     blue = col[k, 2]
          __pyx_t_66 = __pyx_v_k;
          __pyx_t_67 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_67, __pyx_pybuffernd_col.diminfo[1].strides));
 2989: 
 2990: 
+2991:                     imax, imin, jmax, jmin = xo, xo, yo, yo
          __pyx_t_68 = __pyx_v_xo;
          __pyx_t_69 = __pyx_v_xo;
          __pyx_t_70 = __pyx_v_yo;
          __pyx_t_71 = __pyx_v_yo;
          __pyx_v_imax = __pyx_t_68;
          __pyx_v_imin = __pyx_t_69;
          __pyx_v_jmax = __pyx_t_70;
          __pyx_v_jmin = __pyx_t_71;
 2992: 
+2993:                     count = 0
          __pyx_v_count = 0;
+2994:                     for deli in range(0, MAJceil + 1):
          __pyx_t_71 = (__pyx_v_MAJceil + 1);
          for (__pyx_t_70 = 0; __pyx_t_70 < __pyx_t_71; __pyx_t_70+=1) {
            __pyx_v_deli = __pyx_t_70;
+2995:                         for delj in range(0, MINceil + 1):
            __pyx_t_69 = (__pyx_v_MINceil + 1);
            for (__pyx_t_68 = 0; __pyx_t_68 < __pyx_t_69; __pyx_t_68+=1) {
              __pyx_v_delj = __pyx_t_68;
+2996:                             if (deli / MAJ) ** 2 + (delj / MIN) ** 2 <= 1:
              __pyx_t_21 = (((powf((((float)__pyx_v_deli) / __pyx_v_MAJ), 2.0) + powf((((float)__pyx_v_delj) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_21) {
/* … */
              }
            }
          }
+2997:                                 for l1 in range(-1, 2, 2):
                for (__pyx_t_72 = -1L; __pyx_t_72 < 2; __pyx_t_72+=2) {
                  __pyx_v_l1 = __pyx_t_72;
+2998:                                     for l2 in range(-1, 2, 2):
                  for (__pyx_t_73 = -1L; __pyx_t_73 < 2; __pyx_t_73+=2) {
                    __pyx_v_l2 = __pyx_t_73;
+2999:                                         i, j = xo + l1 * deli, yo + l2 * delj
                    __pyx_t_74 = (__pyx_v_xo + (__pyx_v_l1 * __pyx_v_deli));
                    __pyx_t_75 = (__pyx_v_yo + (__pyx_v_l2 * __pyx_v_delj));
                    __pyx_v_i = __pyx_t_74;
                    __pyx_v_j = __pyx_t_75;
+3000:                                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                    __pyx_t_76 = (0 <= __pyx_v_i);
                    if (__pyx_t_76) {
                      __pyx_t_76 = (__pyx_v_i <= (__pyx_v_m - 1));
                    }
                    __pyx_t_77 = (__pyx_t_76 != 0);
                    if (__pyx_t_77) {
                    } else {
                      __pyx_t_21 = __pyx_t_77;
                      goto __pyx_L30_bool_binop_done;
                    }
                    __pyx_t_77 = (0 <= __pyx_v_j);
                    if (__pyx_t_77) {
                      __pyx_t_77 = (__pyx_v_j <= (__pyx_v_n - 1));
                    }
                    __pyx_t_76 = (__pyx_t_77 != 0);
                    __pyx_t_21 = __pyx_t_76;
                    __pyx_L30_bool_binop_done:;
                    if (__pyx_t_21) {
/* … */
                    }
                  }
                }
+3001:                                             if I[i, j] == 0:
                      __pyx_t_75 = __pyx_v_i;
                      __pyx_t_74 = __pyx_v_j;
                      __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3002:                                                 II[i, j] = Io
                        __pyx_t_78 = __pyx_v_i;
                        __pyx_t_79 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_79, __pyx_pybuffernd_II.diminfo[1].strides) = __pyx_v_Io;
+3003:                                                 count = count + 1
                        __pyx_v_count = (__pyx_v_count + 1);
+3004:                                                 if i > imax:
                        __pyx_t_21 = ((__pyx_v_i > __pyx_v_imax) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3005:                                                     imax = i
                          __pyx_v_imax = __pyx_v_i;
+3006:                                                 if i < imin:
                        __pyx_t_21 = ((__pyx_v_i < __pyx_v_imin) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3007:                                                     imin = i
                          __pyx_v_imin = __pyx_v_i;
+3008:                                                 if j > jmax:
                        __pyx_t_21 = ((__pyx_v_j > __pyx_v_jmax) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3009:                                                     jmax = j
                          __pyx_v_jmax = __pyx_v_j;
+3010:                                                 if j < jmin:
                        __pyx_t_21 = ((__pyx_v_j < __pyx_v_jmin) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3011:                                                     jmin = j
                          __pyx_v_jmin = __pyx_v_j;
 3012: 
+3013:                     if count > 0:
          __pyx_t_21 = ((__pyx_v_count > 0) != 0);
          if (__pyx_t_21) {
/* … */
          }
+3014:                         i = imin
            __pyx_v_i = __pyx_v_imin;
+3015:                         go = 1
            __pyx_v_go = 1;
+3016:                         found = 0
            __pyx_v_found = 0;
+3017:                         while go is True:
            while (1) {
              __pyx_t_21 = ((__pyx_v_go == 1) != 0);
              if (!__pyx_t_21) break;
+3018:                             for j in range(jmin, jmax + 1, 1):
              __pyx_t_71 = (__pyx_v_jmax + 1);
              for (__pyx_t_70 = __pyx_v_jmin; __pyx_t_70 < __pyx_t_71; __pyx_t_70+=1) {
                __pyx_v_j = __pyx_t_70;
+3019:                                 if II[i, j] == Io:
                __pyx_t_69 = __pyx_v_i;
                __pyx_t_68 = __pyx_v_j;
                __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                if (__pyx_t_21) {
/* … */
                }
              }
              __pyx_L41_break:;
+3020:                                     if i > 0:
                  __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+3021:                                         if  I[i - 1, j] == Io:
                    __pyx_t_72 = (__pyx_v_i - 1);
                    __pyx_t_73 = __pyx_v_j;
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
+3022:                                             io, jo = i, j
                      __pyx_t_80 = __pyx_v_i;
                      __pyx_t_81 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_80;
                      __pyx_v_jo = __pyx_t_81;
+3023:                                             go = 0
                      __pyx_v_go = 0;
+3024:                                             found = 1
                      __pyx_v_found = 1;
+3025:                                             break
                      goto __pyx_L41_break;
+3026:                                     if j > 0:
                  __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+3027:                                         if I[i, j - 1] == Io:
                    __pyx_t_81 = __pyx_v_i;
                    __pyx_t_80 = (__pyx_v_j - 1);
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_80, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
+3028:                                             io, jo = i, j
                      __pyx_t_82 = __pyx_v_i;
                      __pyx_t_83 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_82;
                      __pyx_v_jo = __pyx_t_83;
+3029:                                             go = 0
                      __pyx_v_go = 0;
+3030:                                             found = 1
                      __pyx_v_found = 1;
+3031:                                             break
                      goto __pyx_L41_break;
 3032: 
+3033:                                     if j < n - 1:
                  __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+3034:                                         if I[i, j + 1] == Io:
                    __pyx_t_83 = __pyx_v_i;
                    __pyx_t_82 = (__pyx_v_j + 1);
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_82, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
+3035:                                             io, jo = i, j
                      __pyx_t_84 = __pyx_v_i;
                      __pyx_t_85 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_84;
                      __pyx_v_jo = __pyx_t_85;
+3036:                                             go = 0
                      __pyx_v_go = 0;
+3037:                                             found = 1
                      __pyx_v_found = 1;
+3038:                                             break
                      goto __pyx_L41_break;
 3039: 
 3040: 
+3041:                                     if i < m - 1:
                  __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+3042:                                         if  I[i + 1, j] == Io:
                    __pyx_t_85 = (__pyx_v_i + 1);
                    __pyx_t_84 = __pyx_v_j;
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_84, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
+3043:                                             io, jo = i, j
                      __pyx_t_86 = __pyx_v_i;
                      __pyx_t_87 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_86;
                      __pyx_v_jo = __pyx_t_87;
+3044:                                             go = 0
                      __pyx_v_go = 0;
+3045:                                             found = 1
                      __pyx_v_found = 1;
+3046:                                             break
                      goto __pyx_L41_break;
+3047:                             i = i + 1
              __pyx_v_i = (__pyx_v_i + 1);
+3048:                             if i == imax + 1:
              __pyx_t_21 = ((__pyx_v_i == (__pyx_v_imax + 1)) != 0);
              if (__pyx_t_21) {
/* … */
              }
            }
+3049:                                 go = 0
                __pyx_v_go = 0;
 3050: 
+3051:                         if found == 1:
            __pyx_t_21 = ((__pyx_v_found == 1) != 0);
            if (__pyx_t_21) {
/* … */
            }
 3052: 
 3053:                             # OUTWARD
+3054:                             for i in range(io, imax + 1):
              __pyx_t_71 = (__pyx_v_imax + 1);
              for (__pyx_t_70 = __pyx_v_io; __pyx_t_70 < __pyx_t_71; __pyx_t_70+=1) {
                __pyx_v_i = __pyx_t_70;
+3055:                                 for j in range(jo, jmax + 1):
                __pyx_t_87 = (__pyx_v_jmax + 1);
                for (__pyx_t_86 = __pyx_v_jo; __pyx_t_86 < __pyx_t_87; __pyx_t_86+=1) {
                  __pyx_v_j = __pyx_t_86;
+3056:                                     for dum in range(1):
                  for (__pyx_t_88 = 0; __pyx_t_88 < 1; __pyx_t_88+=1) {
                    __pyx_v_dum = __pyx_t_88;
+3057:                                         if II[i, j] == Io:
                    __pyx_t_89 = __pyx_v_i;
                    __pyx_t_90 = __pyx_v_j;
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_90, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
                  }
                  __pyx_L58_break:;
                }
+3058:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3059:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_91 = (__pyx_v_i - 1);
                        __pyx_t_92 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_92, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3060:                                                     I[i, j] = Io
                          __pyx_t_93 = __pyx_v_i;
                          __pyx_t_94 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3061:                                                     Col[i, j, 2] = red
                          __pyx_t_95 = __pyx_v_i;
                          __pyx_t_96 = __pyx_v_j;
                          __pyx_t_97 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_96, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_97, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3062:                                                     Col[i, j, 1] = green
                          __pyx_t_98 = __pyx_v_i;
                          __pyx_t_99 = __pyx_v_j;
                          __pyx_t_100 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3063:                                                     Col[i, j, 0] = blue
                          __pyx_t_101 = __pyx_v_i;
                          __pyx_t_102 = __pyx_v_j;
                          __pyx_t_103 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_103, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3064:                                                     a[k] = 1
                          __pyx_t_104 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3065:                                                     break
                          goto __pyx_L58_break;
+3066:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3067:                                                 if I[i, j - 1] == Io:
                        __pyx_t_105 = __pyx_v_i;
                        __pyx_t_106 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3068:                                                     I[i, j] = Io
                          __pyx_t_107 = __pyx_v_i;
                          __pyx_t_108 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3069:                                                     Col[i, j, 2] = red
                          __pyx_t_109 = __pyx_v_i;
                          __pyx_t_110 = __pyx_v_j;
                          __pyx_t_111 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3070:                                                     Col[i, j, 1] = green
                          __pyx_t_112 = __pyx_v_i;
                          __pyx_t_113 = __pyx_v_j;
                          __pyx_t_114 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_114, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3071:                                                     Col[i, j, 0] = blue
                          __pyx_t_115 = __pyx_v_i;
                          __pyx_t_116 = __pyx_v_j;
                          __pyx_t_117 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3072:                                                     a[k] = 1
                          __pyx_t_118 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3073:                                                     break
                          goto __pyx_L58_break;
 3074: 
+3075:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3076:                                                 if I[i, j + 1] == Io:
                        __pyx_t_119 = __pyx_v_i;
                        __pyx_t_120 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3077:                                                     I[i, j] = Io
                          __pyx_t_121 = __pyx_v_i;
                          __pyx_t_122 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3078:                                                     Col[i, j, 2] = red
                          __pyx_t_123 = __pyx_v_i;
                          __pyx_t_124 = __pyx_v_j;
                          __pyx_t_125 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_124, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_125, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3079:                                                     Col[i, j, 1] = green
                          __pyx_t_126 = __pyx_v_i;
                          __pyx_t_127 = __pyx_v_j;
                          __pyx_t_128 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3080:                                                     Col[i, j, 0] = blue
                          __pyx_t_129 = __pyx_v_i;
                          __pyx_t_130 = __pyx_v_j;
                          __pyx_t_131 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3081:                                                     a[k] = 1
                          __pyx_t_132 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3082:                                                     break
                          goto __pyx_L58_break;
 3083: 
 3084: 
+3085:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3086:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_133 = (__pyx_v_i + 1);
                        __pyx_t_134 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3087:                                                     I[i, j] = Io
                          __pyx_t_135 = __pyx_v_i;
                          __pyx_t_136 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3088:                                                     Col[i, j, 2] = red
                          __pyx_t_137 = __pyx_v_i;
                          __pyx_t_138 = __pyx_v_j;
                          __pyx_t_139 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3089:                                                     Col[i, j, 1] = green
                          __pyx_t_140 = __pyx_v_i;
                          __pyx_t_141 = __pyx_v_j;
                          __pyx_t_142 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3090:                                                     Col[i, j, 0] = blue
                          __pyx_t_143 = __pyx_v_i;
                          __pyx_t_144 = __pyx_v_j;
                          __pyx_t_145 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3091:                                                     a[k] = 1
                          __pyx_t_146 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3092:                                                     break
                          goto __pyx_L58_break;
 3093: 
+3094:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_87 = (__pyx_v_jmin - 1);
                for (__pyx_t_86 = (__pyx_v_jo - 1); __pyx_t_86 > __pyx_t_87; __pyx_t_86-=1) {
                  __pyx_v_j = __pyx_t_86;
+3095:                                     for dum in range(1):
                  for (__pyx_t_88 = 0; __pyx_t_88 < 1; __pyx_t_88+=1) {
                    __pyx_v_dum = __pyx_t_88;
+3096:                                         if II[i, j] == Io:
                    __pyx_t_147 = __pyx_v_i;
                    __pyx_t_148 = __pyx_v_j;
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_148, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
                  }
                  __pyx_L71_break:;
                }
              }
+3097:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3098:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_149 = (__pyx_v_i - 1);
                        __pyx_t_150 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_150, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3099:                                                     I[i, j] = Io
                          __pyx_t_151 = __pyx_v_i;
                          __pyx_t_152 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3100:                                                     Col[i, j, 2] = red
                          __pyx_t_153 = __pyx_v_i;
                          __pyx_t_154 = __pyx_v_j;
                          __pyx_t_155 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_155, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3101:                                                     Col[i, j, 1] = green
                          __pyx_t_156 = __pyx_v_i;
                          __pyx_t_157 = __pyx_v_j;
                          __pyx_t_158 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_157, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3102:                                                     Col[i, j, 0] = blue
                          __pyx_t_159 = __pyx_v_i;
                          __pyx_t_160 = __pyx_v_j;
                          __pyx_t_161 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3103:                                                     a[k] = 1
                          __pyx_t_162 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3104:                                                     break
                          goto __pyx_L71_break;
+3105:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3106:                                                 if I[i, j - 1] == Io:
                        __pyx_t_163 = __pyx_v_i;
                        __pyx_t_164 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_164, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3107:                                                     I[i, j] = Io
                          __pyx_t_165 = __pyx_v_i;
                          __pyx_t_166 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3108:                                                     Col[i, j, 2] = red
                          __pyx_t_167 = __pyx_v_i;
                          __pyx_t_168 = __pyx_v_j;
                          __pyx_t_169 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_168, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3109:                                                     Col[i, j, 1] = green
                          __pyx_t_170 = __pyx_v_i;
                          __pyx_t_171 = __pyx_v_j;
                          __pyx_t_172 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_171, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_172, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3110:                                                     Col[i, j, 0] = blue
                          __pyx_t_173 = __pyx_v_i;
                          __pyx_t_174 = __pyx_v_j;
                          __pyx_t_175 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_173, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_174, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_175, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3111:                                                     a[k] = 1
                          __pyx_t_176 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_176, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3112:                                                     break
                          goto __pyx_L71_break;
 3113: 
+3114:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3115:                                                 if I[i, j + 1] == Io:
                        __pyx_t_177 = __pyx_v_i;
                        __pyx_t_178 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_178, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3116:                                                     I[i, j] = Io
                          __pyx_t_179 = __pyx_v_i;
                          __pyx_t_180 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_180, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3117:                                                     Col[i, j, 2] = red
                          __pyx_t_181 = __pyx_v_i;
                          __pyx_t_182 = __pyx_v_j;
                          __pyx_t_183 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_181, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_182, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_183, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3118:                                                     Col[i, j, 1] = green
                          __pyx_t_184 = __pyx_v_i;
                          __pyx_t_185 = __pyx_v_j;
                          __pyx_t_186 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3119:                                                     Col[i, j, 0] = blue
                          __pyx_t_187 = __pyx_v_i;
                          __pyx_t_188 = __pyx_v_j;
                          __pyx_t_189 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3120:                                                     a[k] = 1
                          __pyx_t_190 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_190, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3121:                                                     break
                          goto __pyx_L71_break;
 3122: 
 3123: 
+3124:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3125:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_191 = (__pyx_v_i + 1);
                        __pyx_t_192 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_191, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_192, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3126:                                                     I[i, j] = Io
                          __pyx_t_193 = __pyx_v_i;
                          __pyx_t_194 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_193, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_194, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3127:                                                     Col[i, j, 2] = red
                          __pyx_t_195 = __pyx_v_i;
                          __pyx_t_196 = __pyx_v_j;
                          __pyx_t_197 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_195, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_196, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_197, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3128:                                                     Col[i, j, 1] = green
                          __pyx_t_198 = __pyx_v_i;
                          __pyx_t_199 = __pyx_v_j;
                          __pyx_t_200 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_199, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_200, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3129:                                                     Col[i, j, 0] = blue
                          __pyx_t_201 = __pyx_v_i;
                          __pyx_t_202 = __pyx_v_j;
                          __pyx_t_203 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_201, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_202, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3130:                                                     a[k] = 1
                          __pyx_t_204 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_204, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3131:                                                     break
                          goto __pyx_L71_break;
 3132: 
 3133: 
 3134: 
+3135:                             for i in range(io - 1, imin - 1, -1):
              __pyx_t_71 = (__pyx_v_imin - 1);
              for (__pyx_t_70 = (__pyx_v_io - 1); __pyx_t_70 > __pyx_t_71; __pyx_t_70-=1) {
                __pyx_v_i = __pyx_t_70;
+3136:                                 for j in range(jo, jmax + 1):
                __pyx_t_87 = (__pyx_v_jmax + 1);
                for (__pyx_t_86 = __pyx_v_jo; __pyx_t_86 < __pyx_t_87; __pyx_t_86+=1) {
                  __pyx_v_j = __pyx_t_86;
+3137:                                     for dum in range(1):
                  for (__pyx_t_88 = 0; __pyx_t_88 < 1; __pyx_t_88+=1) {
                    __pyx_v_dum = __pyx_t_88;
+3138:                                         if II[i, j] == Io:
                    __pyx_t_205 = __pyx_v_i;
                    __pyx_t_206 = __pyx_v_j;
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_205, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_206, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
                  }
                  __pyx_L86_break:;
                }
+3139:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3140:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_207 = (__pyx_v_i - 1);
                        __pyx_t_208 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_207, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_208, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3141:                                                     I[i, j] = Io
                          __pyx_t_209 = __pyx_v_i;
                          __pyx_t_210 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_209, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_210, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3142:                                                     Col[i, j, 2] = red
                          __pyx_t_211 = __pyx_v_i;
                          __pyx_t_212 = __pyx_v_j;
                          __pyx_t_213 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_211, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_212, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_213, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3143:                                                     Col[i, j, 1] = green
                          __pyx_t_214 = __pyx_v_i;
                          __pyx_t_215 = __pyx_v_j;
                          __pyx_t_216 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_214, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_215, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_216, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3144:                                                     Col[i, j, 0] = blue
                          __pyx_t_217 = __pyx_v_i;
                          __pyx_t_218 = __pyx_v_j;
                          __pyx_t_219 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_217, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_218, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_219, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3145:                                                     a[k] = 1
                          __pyx_t_220 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_220, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3146:                                                     break
                          goto __pyx_L86_break;
+3147:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3148:                                                 if I[i, j - 1] == Io:
                        __pyx_t_221 = __pyx_v_i;
                        __pyx_t_222 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_221, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_222, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3149:                                                     I[i, j] = Io
                          __pyx_t_223 = __pyx_v_i;
                          __pyx_t_224 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_223, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_224, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3150:                                                     Col[i, j, 2] = red
                          __pyx_t_225 = __pyx_v_i;
                          __pyx_t_226 = __pyx_v_j;
                          __pyx_t_227 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_225, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_226, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_227, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3151:                                                     Col[i, j, 1] = green
                          __pyx_t_228 = __pyx_v_i;
                          __pyx_t_229 = __pyx_v_j;
                          __pyx_t_230 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_228, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_229, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_230, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3152:                                                     Col[i, j, 0] = blue
                          __pyx_t_231 = __pyx_v_i;
                          __pyx_t_232 = __pyx_v_j;
                          __pyx_t_233 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_232, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_233, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3153:                                                     a[k] = 1
                          __pyx_t_234 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_234, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3154:                                                     break
                          goto __pyx_L86_break;
 3155: 
+3156:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3157:                                                 if I[i, j + 1] == Io:
                        __pyx_t_235 = __pyx_v_i;
                        __pyx_t_236 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_235, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_236, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3158:                                                     I[i, j] = Io
                          __pyx_t_237 = __pyx_v_i;
                          __pyx_t_238 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_237, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_238, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3159:                                                     Col[i, j, 2] = red
                          __pyx_t_239 = __pyx_v_i;
                          __pyx_t_240 = __pyx_v_j;
                          __pyx_t_241 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_239, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_240, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_241, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3160:                                                     Col[i, j, 1] = green
                          __pyx_t_242 = __pyx_v_i;
                          __pyx_t_243 = __pyx_v_j;
                          __pyx_t_244 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_242, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_243, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_244, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3161:                                                     Col[i, j, 0] = blue
                          __pyx_t_245 = __pyx_v_i;
                          __pyx_t_246 = __pyx_v_j;
                          __pyx_t_247 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_245, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_246, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_247, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3162:                                                     a[k] = 1
                          __pyx_t_248 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_248, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3163:                                                     break
                          goto __pyx_L86_break;
 3164: 
 3165: 
+3166:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3167:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_249 = (__pyx_v_i + 1);
                        __pyx_t_250 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_249, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_250, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3168:                                                     I[i, j] = Io
                          __pyx_t_251 = __pyx_v_i;
                          __pyx_t_252 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_251, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_252, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3169:                                                     Col[i, j, 2] = red
                          __pyx_t_253 = __pyx_v_i;
                          __pyx_t_254 = __pyx_v_j;
                          __pyx_t_255 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_253, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_254, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_255, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3170:                                                     Col[i, j, 1] = green
                          __pyx_t_256 = __pyx_v_i;
                          __pyx_t_257 = __pyx_v_j;
                          __pyx_t_258 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_256, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_257, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_258, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3171:                                                     Col[i, j, 0] = blue
                          __pyx_t_259 = __pyx_v_i;
                          __pyx_t_260 = __pyx_v_j;
                          __pyx_t_261 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_259, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_260, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_261, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3172:                                                     a[k] = 1
                          __pyx_t_262 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_262, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3173:                                                     break
                          goto __pyx_L86_break;
 3174: 
+3175:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_87 = (__pyx_v_jmin - 1);
                for (__pyx_t_86 = (__pyx_v_jo - 1); __pyx_t_86 > __pyx_t_87; __pyx_t_86-=1) {
                  __pyx_v_j = __pyx_t_86;
+3176:                                     for dum in range(1):
                  for (__pyx_t_88 = 0; __pyx_t_88 < 1; __pyx_t_88+=1) {
                    __pyx_v_dum = __pyx_t_88;
+3177:                                         if II[i, j] == Io:
                    __pyx_t_263 = __pyx_v_i;
                    __pyx_t_264 = __pyx_v_j;
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_263, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_264, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
                  }
                  __pyx_L99_break:;
                }
              }
+3178:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3179:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_265 = (__pyx_v_i - 1);
                        __pyx_t_266 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_265, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_266, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3180:                                                     I[i, j] = Io
                          __pyx_t_267 = __pyx_v_i;
                          __pyx_t_268 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_267, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_268, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3181:                                                     Col[i, j, 2] = red
                          __pyx_t_269 = __pyx_v_i;
                          __pyx_t_270 = __pyx_v_j;
                          __pyx_t_271 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_269, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_270, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_271, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3182:                                                     Col[i, j, 1] = green
                          __pyx_t_272 = __pyx_v_i;
                          __pyx_t_273 = __pyx_v_j;
                          __pyx_t_274 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_272, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_273, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_274, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3183:                                                     Col[i, j, 0] = blue
                          __pyx_t_275 = __pyx_v_i;
                          __pyx_t_276 = __pyx_v_j;
                          __pyx_t_277 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_275, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_276, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_277, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3184:                                                     a[k] = 1
                          __pyx_t_278 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_278, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3185:                                                     break
                          goto __pyx_L99_break;
+3186:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3187:                                                 if I[i, j - 1] == Io:
                        __pyx_t_279 = __pyx_v_i;
                        __pyx_t_280 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_279, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_280, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3188:                                                     I[i, j] = Io
                          __pyx_t_281 = __pyx_v_i;
                          __pyx_t_282 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_281, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_282, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3189:                                                     a[k] = 1
                          __pyx_t_283 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_283, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3190:                                                     break
                          goto __pyx_L99_break;
 3191: 
+3192:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3193:                                                 if I[i, j + 1] == Io:
                        __pyx_t_284 = __pyx_v_i;
                        __pyx_t_285 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_285, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3194:                                                     I[i, j] = Io
                          __pyx_t_286 = __pyx_v_i;
                          __pyx_t_287 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_286, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_287, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3195:                                                     Col[i, j, 2] = red
                          __pyx_t_288 = __pyx_v_i;
                          __pyx_t_289 = __pyx_v_j;
                          __pyx_t_290 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_288, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_289, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_290, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3196:                                                     Col[i, j, 1] = green
                          __pyx_t_291 = __pyx_v_i;
                          __pyx_t_292 = __pyx_v_j;
                          __pyx_t_293 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_291, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_292, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_293, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3197:                                                     Col[i, j, 0] = blue
                          __pyx_t_294 = __pyx_v_i;
                          __pyx_t_295 = __pyx_v_j;
                          __pyx_t_296 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_294, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_295, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_296, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3198:                                                     a[k] = 1
                          __pyx_t_297 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_297, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3199:                                                     break
                          goto __pyx_L99_break;
 3200: 
 3201: 
+3202:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3203:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_298 = (__pyx_v_i + 1);
                        __pyx_t_299 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_298, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_299, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3204:                                                     I[i, j] = Io
                          __pyx_t_300 = __pyx_v_i;
                          __pyx_t_301 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_300, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_301, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3205:                                                     Col[i, j, 2] = red
                          __pyx_t_302 = __pyx_v_i;
                          __pyx_t_303 = __pyx_v_j;
                          __pyx_t_304 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_302, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_303, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_304, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3206:                                                     Col[i, j, 1] = green
                          __pyx_t_305 = __pyx_v_i;
                          __pyx_t_306 = __pyx_v_j;
                          __pyx_t_307 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_305, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_306, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_307, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3207:                                                     Col[i, j, 0] = blue
                          __pyx_t_308 = __pyx_v_i;
                          __pyx_t_309 = __pyx_v_j;
                          __pyx_t_310 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_308, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_309, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_310, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3208:                                                     a[k] = 1
                          __pyx_t_311 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_311, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3209:                                                     break
                          goto __pyx_L99_break;
 3210: 
 3211: 
 3212: 
 3213:                             # INWARD
+3214:                             for i in range(imax, io - 1, -1):
              __pyx_t_71 = (__pyx_v_io - 1);
              for (__pyx_t_70 = __pyx_v_imax; __pyx_t_70 > __pyx_t_71; __pyx_t_70-=1) {
                __pyx_v_i = __pyx_t_70;
+3215:                                 for j in range(jo, jmax + 1):
                __pyx_t_87 = (__pyx_v_jmax + 1);
                for (__pyx_t_86 = __pyx_v_jo; __pyx_t_86 < __pyx_t_87; __pyx_t_86+=1) {
                  __pyx_v_j = __pyx_t_86;
+3216:                                     for dum in range(1):
                  for (__pyx_t_88 = 0; __pyx_t_88 < 1; __pyx_t_88+=1) {
                    __pyx_v_dum = __pyx_t_88;
+3217:                                         if II[i, j] == Io:
                    __pyx_t_312 = __pyx_v_i;
                    __pyx_t_313 = __pyx_v_j;
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_312, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_313, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
                  }
                  __pyx_L114_break:;
                }
+3218:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3219:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_314 = (__pyx_v_i - 1);
                        __pyx_t_315 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_314, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_315, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3220:                                                     I[i, j] = Io
                          __pyx_t_316 = __pyx_v_i;
                          __pyx_t_317 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_316, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_317, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3221:                                                     Col[i, j, 2] = red
                          __pyx_t_318 = __pyx_v_i;
                          __pyx_t_319 = __pyx_v_j;
                          __pyx_t_320 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_318, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_319, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_320, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3222:                                                     Col[i, j, 1] = green
                          __pyx_t_321 = __pyx_v_i;
                          __pyx_t_322 = __pyx_v_j;
                          __pyx_t_323 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_321, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_322, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_323, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3223:                                                     Col[i, j, 0] = blue
                          __pyx_t_324 = __pyx_v_i;
                          __pyx_t_325 = __pyx_v_j;
                          __pyx_t_326 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_324, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_325, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_326, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3224:                                                     a[k] = 1
                          __pyx_t_327 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_327, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3225:                                                     break
                          goto __pyx_L114_break;
+3226:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3227:                                                 if I[i, j - 1] == Io:
                        __pyx_t_328 = __pyx_v_i;
                        __pyx_t_329 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_328, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_329, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3228:                                                     I[i, j] = Io
                          __pyx_t_330 = __pyx_v_i;
                          __pyx_t_331 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_330, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_331, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3229:                                                     Col[i, j, 2] = red
                          __pyx_t_332 = __pyx_v_i;
                          __pyx_t_333 = __pyx_v_j;
                          __pyx_t_334 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_332, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_333, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_334, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3230:                                                     Col[i, j, 1] = green
                          __pyx_t_335 = __pyx_v_i;
                          __pyx_t_336 = __pyx_v_j;
                          __pyx_t_337 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_335, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_336, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_337, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3231:                                                     Col[i, j, 0] = blue
                          __pyx_t_338 = __pyx_v_i;
                          __pyx_t_339 = __pyx_v_j;
                          __pyx_t_340 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_338, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_339, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_340, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3232:                                                     a[k] = 1
                          __pyx_t_341 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_341, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3233:                                                     break
                          goto __pyx_L114_break;
 3234: 
+3235:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3236:                                                 if I[i, j + 1] == Io:
                        __pyx_t_342 = __pyx_v_i;
                        __pyx_t_343 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_342, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_343, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3237:                                                     I[i, j] = Io
                          __pyx_t_344 = __pyx_v_i;
                          __pyx_t_345 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_344, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_345, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3238:                                                     Col[i, j, 2] = red
                          __pyx_t_346 = __pyx_v_i;
                          __pyx_t_347 = __pyx_v_j;
                          __pyx_t_348 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_346, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_347, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_348, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3239:                                                     Col[i, j, 1] = green
                          __pyx_t_349 = __pyx_v_i;
                          __pyx_t_350 = __pyx_v_j;
                          __pyx_t_351 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_349, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_350, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_351, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3240:                                                     Col[i, j, 0] = blue
                          __pyx_t_352 = __pyx_v_i;
                          __pyx_t_353 = __pyx_v_j;
                          __pyx_t_354 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_352, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_353, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_354, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3241:                                                     a[k] = 1
                          __pyx_t_355 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_355, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3242:                                                     break
                          goto __pyx_L114_break;
 3243: 
 3244: 
+3245:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3246:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_356 = (__pyx_v_i + 1);
                        __pyx_t_357 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_356, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_357, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3247:                                                     I[i, j] = Io
                          __pyx_t_358 = __pyx_v_i;
                          __pyx_t_359 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_358, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_359, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3248:                                                     Col[i, j, 2] = red
                          __pyx_t_360 = __pyx_v_i;
                          __pyx_t_361 = __pyx_v_j;
                          __pyx_t_362 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_360, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_361, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_362, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3249:                                                     Col[i, j, 1] = green
                          __pyx_t_363 = __pyx_v_i;
                          __pyx_t_364 = __pyx_v_j;
                          __pyx_t_365 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_363, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_364, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_365, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3250:                                                     Col[i, j, 0] = blue
                          __pyx_t_366 = __pyx_v_i;
                          __pyx_t_367 = __pyx_v_j;
                          __pyx_t_368 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_366, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_367, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_368, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3251:                                                     a[k] = 1
                          __pyx_t_369 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_369, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3252:                                                     break
                          goto __pyx_L114_break;
 3253: 
+3254:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_87 = (__pyx_v_jmin - 1);
                for (__pyx_t_86 = (__pyx_v_jo - 1); __pyx_t_86 > __pyx_t_87; __pyx_t_86-=1) {
                  __pyx_v_j = __pyx_t_86;
+3255:                                     for dum in range(1):
                  for (__pyx_t_88 = 0; __pyx_t_88 < 1; __pyx_t_88+=1) {
                    __pyx_v_dum = __pyx_t_88;
+3256:                                         if II[i, j] == Io:
                    __pyx_t_370 = __pyx_v_i;
                    __pyx_t_371 = __pyx_v_j;
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_370, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_371, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
                  }
                  __pyx_L127_break:;
                }
              }
+3257:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3258:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_372 = (__pyx_v_i - 1);
                        __pyx_t_373 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_372, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_373, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3259:                                                     I[i, j] = Io
                          __pyx_t_374 = __pyx_v_i;
                          __pyx_t_375 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_374, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_375, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3260:                                                     Col[i, j, 2] = red
                          __pyx_t_376 = __pyx_v_i;
                          __pyx_t_377 = __pyx_v_j;
                          __pyx_t_378 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_376, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_377, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_378, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3261:                                                     Col[i, j, 1] = green
                          __pyx_t_379 = __pyx_v_i;
                          __pyx_t_380 = __pyx_v_j;
                          __pyx_t_381 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_379, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_380, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_381, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3262:                                                     Col[i, j, 0] = blue
                          __pyx_t_382 = __pyx_v_i;
                          __pyx_t_383 = __pyx_v_j;
                          __pyx_t_384 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_382, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_383, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_384, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3263:                                                     a[k] = 1
                          __pyx_t_385 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_385, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3264:                                                     break
                          goto __pyx_L127_break;
+3265:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3266:                                                 if I[i, j - 1] == Io:
                        __pyx_t_386 = __pyx_v_i;
                        __pyx_t_387 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_386, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_387, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3267:                                                     I[i, j] = Io
                          __pyx_t_388 = __pyx_v_i;
                          __pyx_t_389 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_388, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_389, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3268:                                                     Col[i, j, 2] = red
                          __pyx_t_390 = __pyx_v_i;
                          __pyx_t_391 = __pyx_v_j;
                          __pyx_t_392 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_390, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_391, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_392, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3269:                                                     Col[i, j, 1] = green
                          __pyx_t_393 = __pyx_v_i;
                          __pyx_t_394 = __pyx_v_j;
                          __pyx_t_395 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_393, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_394, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_395, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3270:                                                     Col[i, j, 0] = blue
                          __pyx_t_396 = __pyx_v_i;
                          __pyx_t_397 = __pyx_v_j;
                          __pyx_t_398 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_396, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_397, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_398, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3271:                                                     a[k] = 1
                          __pyx_t_399 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_399, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3272:                                                     break
                          goto __pyx_L127_break;
 3273: 
+3274:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3275:                                                 if I[i, j + 1] == Io:
                        __pyx_t_400 = __pyx_v_i;
                        __pyx_t_401 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_400, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_401, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3276:                                                     I[i, j] = Io
                          __pyx_t_402 = __pyx_v_i;
                          __pyx_t_403 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_402, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_403, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3277:                                                     Col[i, j, 2] = red
                          __pyx_t_404 = __pyx_v_i;
                          __pyx_t_405 = __pyx_v_j;
                          __pyx_t_406 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_404, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_405, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_406, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3278:                                                     Col[i, j, 1] = green
                          __pyx_t_407 = __pyx_v_i;
                          __pyx_t_408 = __pyx_v_j;
                          __pyx_t_409 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_407, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_408, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_409, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3279:                                                     Col[i, j, 0] = blue
                          __pyx_t_410 = __pyx_v_i;
                          __pyx_t_411 = __pyx_v_j;
                          __pyx_t_412 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_410, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_411, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_412, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3280:                                                     a[k] = 1
                          __pyx_t_413 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_413, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3281:                                                     break
                          goto __pyx_L127_break;
 3282: 
 3283: 
+3284:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3285:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_414 = (__pyx_v_i + 1);
                        __pyx_t_415 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_414, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_415, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3286:                                                     I[i, j] = Io
                          __pyx_t_416 = __pyx_v_i;
                          __pyx_t_417 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_416, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_417, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3287:                                                     Col[i, j, 2] = red
                          __pyx_t_418 = __pyx_v_i;
                          __pyx_t_419 = __pyx_v_j;
                          __pyx_t_420 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_418, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_419, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_420, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3288:                                                     Col[i, j, 1] = green
                          __pyx_t_421 = __pyx_v_i;
                          __pyx_t_422 = __pyx_v_j;
                          __pyx_t_423 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_421, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_422, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_423, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3289:                                                     Col[i, j, 0] = blue
                          __pyx_t_424 = __pyx_v_i;
                          __pyx_t_425 = __pyx_v_j;
                          __pyx_t_426 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_424, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_425, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_426, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3290:                                                     a[k] = 1
                          __pyx_t_427 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_427, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3291:                                                     break
                          goto __pyx_L127_break;
 3292: 
 3293: 
 3294: 
+3295:                             for i in range(imin, io, -1):
              __pyx_t_71 = __pyx_v_io;
              for (__pyx_t_70 = __pyx_v_imin; __pyx_t_70 > __pyx_t_71; __pyx_t_70-=1) {
                __pyx_v_i = __pyx_t_70;
+3296:                                 for j in range(jo, jmax + 1):
                __pyx_t_87 = (__pyx_v_jmax + 1);
                for (__pyx_t_86 = __pyx_v_jo; __pyx_t_86 < __pyx_t_87; __pyx_t_86+=1) {
                  __pyx_v_j = __pyx_t_86;
+3297:                                     for dum in range(1):
                  for (__pyx_t_88 = 0; __pyx_t_88 < 1; __pyx_t_88+=1) {
                    __pyx_v_dum = __pyx_t_88;
+3298:                                         if II[i, j] == Io:
                    __pyx_t_428 = __pyx_v_i;
                    __pyx_t_429 = __pyx_v_j;
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_428, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_429, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
                  }
                  __pyx_L142_break:;
                }
+3299:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3300:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_430 = (__pyx_v_i - 1);
                        __pyx_t_431 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_430, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_431, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3301:                                                     I[i, j] = Io
                          __pyx_t_432 = __pyx_v_i;
                          __pyx_t_433 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_432, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_433, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3302:                                                     Col[i, j, 2] = red
                          __pyx_t_434 = __pyx_v_i;
                          __pyx_t_435 = __pyx_v_j;
                          __pyx_t_436 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_434, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_435, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_436, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3303:                                                     Col[i, j, 1] = green
                          __pyx_t_437 = __pyx_v_i;
                          __pyx_t_438 = __pyx_v_j;
                          __pyx_t_439 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_437, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_438, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_439, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3304:                                                     Col[i, j, 0] = blue
                          __pyx_t_440 = __pyx_v_i;
                          __pyx_t_441 = __pyx_v_j;
                          __pyx_t_442 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_440, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_441, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_442, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3305:                                                     a[k] = 1
                          __pyx_t_443 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_443, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3306:                                                     break
                          goto __pyx_L142_break;
+3307:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3308:                                                 if I[i, j - 1] == Io:
                        __pyx_t_444 = __pyx_v_i;
                        __pyx_t_445 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_444, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_445, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3309:                                                     I[i, j] = Io
                          __pyx_t_446 = __pyx_v_i;
                          __pyx_t_447 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_446, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_447, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3310:                                                     Col[i, j, 2] = red
                          __pyx_t_448 = __pyx_v_i;
                          __pyx_t_449 = __pyx_v_j;
                          __pyx_t_450 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_448, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_449, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_450, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3311:                                                     Col[i, j, 1] = green
                          __pyx_t_451 = __pyx_v_i;
                          __pyx_t_452 = __pyx_v_j;
                          __pyx_t_453 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_451, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_452, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_453, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3312:                                                     Col[i, j, 0] = blue
                          __pyx_t_454 = __pyx_v_i;
                          __pyx_t_455 = __pyx_v_j;
                          __pyx_t_456 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_454, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_455, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_456, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3313:                                                     a[k] = 1
                          __pyx_t_457 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_457, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3314:                                                     break
                          goto __pyx_L142_break;
 3315: 
+3316:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3317:                                                 if I[i, j + 1] == Io:
                        __pyx_t_458 = __pyx_v_i;
                        __pyx_t_459 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_458, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_459, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3318:                                                     I[i, j] = Io
                          __pyx_t_460 = __pyx_v_i;
                          __pyx_t_461 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_460, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_461, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3319:                                                     Col[i, j, 2] = red
                          __pyx_t_462 = __pyx_v_i;
                          __pyx_t_463 = __pyx_v_j;
                          __pyx_t_464 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_462, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_463, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_464, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3320:                                                     Col[i, j, 1] = green
                          __pyx_t_465 = __pyx_v_i;
                          __pyx_t_466 = __pyx_v_j;
                          __pyx_t_467 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_465, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_466, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_467, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3321:                                                     Col[i, j, 0] = blue
                          __pyx_t_468 = __pyx_v_i;
                          __pyx_t_469 = __pyx_v_j;
                          __pyx_t_470 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_468, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_469, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_470, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3322:                                                     a[k] = 1
                          __pyx_t_471 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_471, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3323:                                                     break
                          goto __pyx_L142_break;
 3324: 
 3325: 
+3326:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3327:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_472 = (__pyx_v_i + 1);
                        __pyx_t_473 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_472, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_473, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3328:                                                     I[i, j] = Io
                          __pyx_t_474 = __pyx_v_i;
                          __pyx_t_475 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_474, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_475, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3329:                                                     Col[i, j, 2] = red
                          __pyx_t_476 = __pyx_v_i;
                          __pyx_t_477 = __pyx_v_j;
                          __pyx_t_478 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_476, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_477, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_478, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3330:                                                     Col[i, j, 1] = green
                          __pyx_t_479 = __pyx_v_i;
                          __pyx_t_480 = __pyx_v_j;
                          __pyx_t_481 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_479, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_480, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_481, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3331:                                                     Col[i, j, 0] = blue
                          __pyx_t_482 = __pyx_v_i;
                          __pyx_t_483 = __pyx_v_j;
                          __pyx_t_484 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_482, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_483, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_484, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3332:                                                     a[k] = 1
                          __pyx_t_485 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_485, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3333:                                                     break
                          goto __pyx_L142_break;
 3334: 
+3335:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_87 = (__pyx_v_jmin - 1);
                for (__pyx_t_86 = (__pyx_v_jo - 1); __pyx_t_86 > __pyx_t_87; __pyx_t_86-=1) {
                  __pyx_v_j = __pyx_t_86;
+3336:                                     for dum in range(1):
                  for (__pyx_t_88 = 0; __pyx_t_88 < 1; __pyx_t_88+=1) {
                    __pyx_v_dum = __pyx_t_88;
+3337:                                         if II[i, j] == Io:
                    __pyx_t_486 = __pyx_v_i;
                    __pyx_t_487 = __pyx_v_j;
                    __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_486, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_487, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_21) {
/* … */
                    }
                  }
                  __pyx_L155_break:;
                }
              }
+3338:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3339:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_488 = (__pyx_v_i - 1);
                        __pyx_t_489 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_488, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_489, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3340:                                                     I[i, j] = Io
                          __pyx_t_490 = __pyx_v_i;
                          __pyx_t_491 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_490, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_491, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3341:                                                     Col[i, j, 2] = red
                          __pyx_t_492 = __pyx_v_i;
                          __pyx_t_493 = __pyx_v_j;
                          __pyx_t_494 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_492, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_493, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_494, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3342:                                                     Col[i, j, 1] = green
                          __pyx_t_495 = __pyx_v_i;
                          __pyx_t_496 = __pyx_v_j;
                          __pyx_t_497 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_495, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_496, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_497, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3343:                                                     Col[i, j, 0] = blue
                          __pyx_t_498 = __pyx_v_i;
                          __pyx_t_499 = __pyx_v_j;
                          __pyx_t_500 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_498, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_499, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_500, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3344:                                                     a[k] = 1
                          __pyx_t_501 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_501, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3345:                                                     break
                          goto __pyx_L155_break;
+3346:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3347:                                                 if I[i, j - 1] == Io:
                        __pyx_t_502 = __pyx_v_i;
                        __pyx_t_503 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_502, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_503, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3348:                                                     I[i, j] = Io
                          __pyx_t_504 = __pyx_v_i;
                          __pyx_t_505 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_504, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_505, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3349:                                                     Col[i, j, 2] = red
                          __pyx_t_506 = __pyx_v_i;
                          __pyx_t_507 = __pyx_v_j;
                          __pyx_t_508 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_506, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_507, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_508, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3350:                                                     Col[i, j, 1] = green
                          __pyx_t_509 = __pyx_v_i;
                          __pyx_t_510 = __pyx_v_j;
                          __pyx_t_511 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_509, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_510, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_511, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3351:                                                     Col[i, j, 0] = blue
                          __pyx_t_512 = __pyx_v_i;
                          __pyx_t_513 = __pyx_v_j;
                          __pyx_t_514 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_512, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_513, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_514, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3352:                                                     a[k] = 1
                          __pyx_t_515 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_515, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3353:                                                     break
                          goto __pyx_L155_break;
 3354: 
+3355:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3356:                                                 if I[i, j + 1] == Io:
                        __pyx_t_516 = __pyx_v_i;
                        __pyx_t_517 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_516, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_517, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3357:                                                     I[i, j] = Io
                          __pyx_t_518 = __pyx_v_i;
                          __pyx_t_519 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_518, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_519, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3358:                                                     Col[i, j, 2] = red
                          __pyx_t_520 = __pyx_v_i;
                          __pyx_t_521 = __pyx_v_j;
                          __pyx_t_522 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_520, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_521, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_522, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3359:                                                     Col[i, j, 1] = green
                          __pyx_t_523 = __pyx_v_i;
                          __pyx_t_524 = __pyx_v_j;
                          __pyx_t_525 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_523, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_524, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_525, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3360:                                                     Col[i, j, 0] = blue
                          __pyx_t_526 = __pyx_v_i;
                          __pyx_t_527 = __pyx_v_j;
                          __pyx_t_528 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_526, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_527, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_528, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3361:                                                     a[k] = 1
                          __pyx_t_529 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_529, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3362:                                                     break
                          goto __pyx_L155_break;
 3363: 
 3364: 
+3365:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3366:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_530 = (__pyx_v_i + 1);
                        __pyx_t_531 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_530, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_531, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3367:                                                     I[i, j] = Io
                          __pyx_t_532 = __pyx_v_i;
                          __pyx_t_533 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_532, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_533, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3368:                                                     Col[i, j, 2] = red
                          __pyx_t_534 = __pyx_v_i;
                          __pyx_t_535 = __pyx_v_j;
                          __pyx_t_536 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_534, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_535, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_536, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3369:                                                     Col[i, j, 1] = green
                          __pyx_t_537 = __pyx_v_i;
                          __pyx_t_538 = __pyx_v_j;
                          __pyx_t_539 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_537, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_538, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_539, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3370:                                                     Col[i, j, 0] = blue
                          __pyx_t_540 = __pyx_v_i;
                          __pyx_t_541 = __pyx_v_j;
                          __pyx_t_542 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_540, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_541, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_542, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3371:                                                     a[k] = 1
                          __pyx_t_543 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_543, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3372:                                                     break
                          goto __pyx_L155_break;
 3373: 
 3374: 
+3375:                     if a[k] == 0:
          __pyx_t_71 = __pyx_v_k;
          __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_21) {
/* … */
          }
+3376:                         xmin = max(0, xo - MAJceil)
            __pyx_t_70 = (__pyx_v_xo - __pyx_v_MAJceil);
            __pyx_t_544 = 0;
            if (((__pyx_t_70 > __pyx_t_544) != 0)) {
              __pyx_t_87 = __pyx_t_70;
            } else {
              __pyx_t_87 = __pyx_t_544;
            }
            __pyx_v_xmin = __pyx_t_87;
+3377:                         xmax = min(m - 1, xo + MAJceil)
            __pyx_t_87 = (__pyx_v_xo + __pyx_v_MAJceil);
            __pyx_t_70 = (__pyx_v_m - 1);
            if (((__pyx_t_87 < __pyx_t_70) != 0)) {
              __pyx_t_86 = __pyx_t_87;
            } else {
              __pyx_t_86 = __pyx_t_70;
            }
            __pyx_v_xmax = __pyx_t_86;
+3378:                         ymin = max(0, yo - MINceil)
            __pyx_t_86 = (__pyx_v_yo - __pyx_v_MINceil);
            __pyx_t_544 = 0;
            if (((__pyx_t_86 > __pyx_t_544) != 0)) {
              __pyx_t_87 = __pyx_t_86;
            } else {
              __pyx_t_87 = __pyx_t_544;
            }
            __pyx_v_ymin = __pyx_t_87;
+3379:                         ymax = min(n - 1, yo + MINceil)
            __pyx_t_87 = (__pyx_v_yo + __pyx_v_MINceil);
            __pyx_t_86 = (__pyx_v_n - 1);
            if (((__pyx_t_87 < __pyx_t_86) != 0)) {
              __pyx_t_70 = __pyx_t_87;
            } else {
              __pyx_t_70 = __pyx_t_86;
            }
            __pyx_v_ymax = __pyx_t_70;
+3380:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_70 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 3381: 
+3382:             showriteframe(sa, sf, fd, MAJceil, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_MAJceil, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+3383:             MAJ = MAJ + 1.0
      __pyx_v_MAJ = (__pyx_v_MAJ + 1.0);
    }
+3384:         if asy == 0:
    __pyx_t_21 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_21) {
/* … */
    }
+3385:             break
      goto __pyx_L12_break;
 3386:         else:
+3387:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_25 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_25); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3387, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_all); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      __pyx_t_25 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_25)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_25);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (__pyx_t_25) {
        __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3387, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      } else {
        __pyx_t_23 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3387, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_t_23, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 3387, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_21) {
/* … */
      }
+3388:                 break
        goto __pyx_L12_break;
 3389:             else:
+3390:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3390, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+3391:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_25);
        __pyx_t_6 = 0;
        __pyx_t_25 = 0;
        __pyx_t_25 = PyTuple_New(1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_25, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3391, __pyx_L1_error)
        __pyx_t_8 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3391, __pyx_L1_error)
        }
        __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
+3392:                 II = np.zeros((m, n), dtype=np.int64)
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_23 = PyTuple_New(2); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_23, 1, __pyx_t_25);
        __pyx_t_4 = 0;
        __pyx_t_25 = 0;
        __pyx_t_25 = PyTuple_New(1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_23);
        PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_23);
        __pyx_t_23 = 0;
        __pyx_t_23 = PyDict_New(); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PyDict_SetItem(__pyx_t_23, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_25, __pyx_t_23); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3392, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_6);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_II.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_II.rcbuffer->pybuffer, (PyObject*)__pyx_v_II, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_II.diminfo[0].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_II.diminfo[0].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_II.diminfo[1].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_II.diminfo[1].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3392, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_II, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;
+3393:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3393, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ones); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3393, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3393, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_25 = PyTuple_New(1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3393, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3393, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3393, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3393, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 3393, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_25, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3393, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3393, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3393, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
+3394:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3394, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_centroids); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3394, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3394, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_23 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3394, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3394, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = NULL;
        __pyx_t_24 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_25);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_25, function);
            __pyx_t_24 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(4+__pyx_t_24); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3394, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_1) {
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_24, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_24, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_23);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_24, __pyx_t_23);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_24, __pyx_t_7);
        __pyx_t_6 = 0;
        __pyx_t_23 = 0;
        __pyx_t_7 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3394, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
          PyObject* sequence = __pyx_t_4;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 3394, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_25 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_25 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_25);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_25 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3394, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3394, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3394, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_22 = Py_TYPE(__pyx_t_7)->tp_iternext;
          index = 0; __pyx_t_25 = __pyx_t_22(__pyx_t_7); if (unlikely(!__pyx_t_25)) goto __pyx_L168_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_25);
          index = 1; __pyx_t_5 = __pyx_t_22(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L168_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_7), 2) < 0) __PYX_ERR(0, 3394, __pyx_L1_error)
          __pyx_t_22 = NULL;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L169_unpacking_done;
          __pyx_L168_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_22 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 3394, __pyx_L1_error)
          __pyx_L169_unpacking_done:;
        }
        if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3394, __pyx_L1_error)
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3394, __pyx_L1_error)
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_25);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3394, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_25));
        __pyx_t_25 = 0;
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3394, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+3395:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
+3396:     toc = time.time()
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_25);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_25, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_25, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3396, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_25); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3396, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3396, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_toc = __pyx_t_20;
+3397:     obj.exetime = toc - tic
  __pyx_t_4 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_4) < 0) __PYX_ERR(0, 3397, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3398:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 3398, __pyx_L1_error)
+3399:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 3399, __pyx_L1_error)
+3400:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 3400, __pyx_L1_error)
+3401:     obj.Rvalues = Rval
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Rvalues, ((PyObject *)__pyx_v_Rval)) < 0) __PYX_ERR(0, 3401, __pyx_L1_error)
+3402:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 3402, __pyx_L1_error)
+3403:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 3404: 
 3405: 
+3406: def Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_33Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_33Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot = {"Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot", (PyCFunction)__pyx_pw_9libEVOLVE_33Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_33Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_32Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_32Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_R;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Thetafunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_delX;
  PY_LONG_LONG __pyx_v_delY;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_MAJ;
  float __pyx_v_MIN;
  float __pyx_v_theta;
  float __pyx_v_c;
  float __pyx_v_s;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Theta = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Theta;
  __Pyx_Buffer __pyx_pybuffer_Theta;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Theta.pybuffer.buf = NULL;
  __pyx_pybuffer_Theta.refcount = 0;
  __pyx_pybuffernd_Theta.data = NULL;
  __pyx_pybuffernd_Theta.rcbuffer = &__pyx_pybuffer_Theta;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_25);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Thetafunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Theta);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__43 = PyTuple_Pack(54, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_R, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Thetafunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_dum, __pyx_n_s_countim, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_delX, __pyx_n_s_delY, __pyx_n_s_Iter, __pyx_n_s_MAJ, __pyx_n_s_MIN, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Theta, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 3406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__43);
  __Pyx_GIVEREF(__pyx_tuple__43);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_33Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_without_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_7, __pyx_t_2) < 0) __PYX_ERR(0, 3406, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 54, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_7, 3406, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 3406, __pyx_L1_error)
 3407: 
 3408:     # Grabbing data from the input object
+3409:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3409, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+3410:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3410, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+3411:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3411, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+3412:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3412, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+3413:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+3414:     cdef float R = obj.R
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_R); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3414, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_R = __pyx_t_3;
+3415:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3415, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+3416:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3416, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3416, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+3417:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3417, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_4;
+3418:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_4;
+3419:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+3420:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+3421:     Thetafunc = obj.Thetafunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Thetafunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Thetafunc = __pyx_t_1;
  __pyx_t_1 = 0;
 3422: 
 3423: 
 3424:     # Declaring other variables
 3425:     cdef double tic, toc
 3426:     cdef long long deli, delj, PN, PE, PW, PS, Io, win, xmin, xmax, ymin, ymax, dum, countim, i, j, k, xo, yo, delX, delY, Iter
 3427:     cdef float MAJ, MIN, theta, c, s, red, green, blue
+3428:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3428, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3428, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+3429:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3429, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3429, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3430:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3430, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3430, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+3431:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 3431, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3431, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3431, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+3432:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 3432, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3432, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3432, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+3433:     cdef np.ndarray[np.float64_t, ndim = 1] Theta = np.zeros(p, dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3433, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Theta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3433, __pyx_L1_error)
    } else {__pyx_pybuffernd_Theta.diminfo[0].strides = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Theta.diminfo[0].shape = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_Theta = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3434:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3434, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3434, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+3435:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3435, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3435, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3436:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3436, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3436, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3436, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3437:     col = np.random.random((p, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3437, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3437, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3437, __pyx_L1_error)
  }
  __pyx_t_16 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_1));
  __pyx_t_1 = 0;
+3438:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3438, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3438, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3438, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tic = __pyx_t_20;
 3439: 
+3440:     if pdelNxy == []:
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3440, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 3440, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_21) {
/* … */
    goto __pyx_L3;
  }
+3441:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_7 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3441, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3441, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3441, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3441, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3441, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_8)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_22(__pyx_t_8); if (unlikely(!__pyx_t_1)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_6 = __pyx_t_22(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_8), 2) < 0) __PYX_ERR(0, 3441, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3441, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3441, __pyx_L1_error)
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3441, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3441, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3441, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;
 3442:     else:
+3443:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_23 = NULL;
    __pyx_t_24 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_23)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_23);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_24 = 1;
      }
    }
    __pyx_t_25 = PyTuple_New(7+__pyx_t_24); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    if (__pyx_t_23) {
      __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_23); __pyx_t_23 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_24, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_24, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_24, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_24, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_24, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_25, 5+__pyx_t_24, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_25, 6+__pyx_t_24, __pyx_int_1);
    __pyx_t_6 = 0;
    __pyx_t_8 = 0;
    __pyx_t_5 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3443, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_25 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_25 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_25);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_25 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_5 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_5)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_22(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_25 = __pyx_t_22(__pyx_t_5); if (unlikely(!__pyx_t_25)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_25);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_5), 2) < 0) __PYX_ERR(0, 3443, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3443, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3443, __pyx_L1_error)
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3443, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3443, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3443, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
  }
  __pyx_L3:;
 3444: 
+3445:     if labelsorted == 1:
  __pyx_t_21 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_21) {
/* … */
  }
+3446:         X, Y = labelsort(n, X, Y)
    __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = NULL;
    __pyx_t_24 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_25);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_25, function);
        __pyx_t_24 = 1;
      }
    }
    __pyx_t_8 = PyTuple_New(3+__pyx_t_24); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_24, __pyx_t_1);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_24, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_24, ((PyObject *)__pyx_v_Y));
    __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3446, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_25 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_25 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_8);
      #else
      __pyx_t_25 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3446, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3446, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3446, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_22 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_25 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_25)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_25);
      index = 1; __pyx_t_8 = __pyx_t_22(__pyx_t_1); if (unlikely(!__pyx_t_8)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_1), 2) < 0) __PYX_ERR(0, 3446, __pyx_L1_error)
      __pyx_t_22 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_22 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3446, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3446, __pyx_L1_error)
    if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3446, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_25);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3446, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_25));
    __pyx_t_25 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3446, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_8));
    __pyx_t_8 = 0;
 3447: 
 3448: 
+3449:     Iter = 1
  __pyx_v_Iter = 1;
 3450: 
+3451:     while True:
  while (1) {
 3452: 
+3453:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
      __pyx_v_k = __pyx_t_26;
+3454:             I[X[k], Y[k]] = k + 1
      __pyx_t_27 = __pyx_v_k;
      __pyx_t_28 = __pyx_v_k;
      __pyx_t_29 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_30 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+3455:             Theta[k] = Thetafunc(X[k], Y[k], k + 1 , 1, 1)
      __pyx_t_31 = __pyx_v_k;
      __pyx_t_8 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3455, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_32 = __pyx_v_k;
      __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3455, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3455, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_Thetafunc);
      __pyx_t_5 = __pyx_v_Thetafunc; __pyx_t_6 = NULL;
      __pyx_t_24 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_24 = 1;
        }
      }
      __pyx_t_23 = PyTuple_New(5+__pyx_t_24); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3455, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_24, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_25);
      PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_24, __pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_23, 2+__pyx_t_24, __pyx_t_1);
      __Pyx_INCREF(__pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_t_23, 3+__pyx_t_24, __pyx_int_1);
      __Pyx_INCREF(__pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_t_23, 4+__pyx_t_24, __pyx_int_1);
      __pyx_t_8 = 0;
      __pyx_t_25 = 0;
      __pyx_t_1 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_23, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3455, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_33 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_33 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 3455, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_34 = __pyx_v_k;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_33;
+3456:             Col[X[k], Y[k], 2] = col[k, 0]
      __pyx_t_35 = __pyx_v_k;
      __pyx_t_36 = 0;
      __pyx_t_37 = __pyx_v_k;
      __pyx_t_38 = __pyx_v_k;
      __pyx_t_39 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_40 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_41 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_col.diminfo[1].strides));
+3457:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_42 = __pyx_v_k;
      __pyx_t_43 = 1;
      __pyx_t_44 = __pyx_v_k;
      __pyx_t_45 = __pyx_v_k;
      __pyx_t_46 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_47 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_48 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_col.diminfo[1].strides));
+3458:             Col[X[k], Y[k], 0] = col[k, 2]
      __pyx_t_49 = __pyx_v_k;
      __pyx_t_50 = 2;
      __pyx_t_51 = __pyx_v_k;
      __pyx_t_52 = __pyx_v_k;
      __pyx_t_53 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_54 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_55 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_54, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_55, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_col.diminfo[1].strides));
    }
 3459: 
+3460:         showriteframe(sa, sf, fd, 0, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, 0, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+3461:         MAJ = 1.0
    __pyx_v_MAJ = 1.0;
+3462:         MIN = MAJ / R
    __pyx_v_MIN = (__pyx_v_MAJ / __pyx_v_R);
 3463: 
+3464:         countim = 0
    __pyx_v_countim = 0;
+3465:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3465, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3465, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_23);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_23, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3465, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      } else {
        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3465, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3465, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_23 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3465, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_23); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 3465, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      if (!__pyx_t_21) break;
+3466:             countim = countim + 1
      __pyx_v_countim = (__pyx_v_countim + 1);
+3467:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_2; __pyx_t_26+=1) {
        __pyx_v_k = __pyx_t_26;
+3468:                 if a[k] == 1:
        __pyx_t_56 = __pyx_v_k;
        __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_21) {
/* … */
        }
      }
+3469:                     a[k] = 0
          __pyx_t_57 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+3470:                     xo = X[k]
          __pyx_t_58 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_X.diminfo[0].strides));
+3471:                     yo = Y[k]
          __pyx_t_59 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_Y.diminfo[0].strides));
+3472:                     theta = Theta[k]
          __pyx_t_60 = __pyx_v_k;
          __pyx_v_theta = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_Theta.diminfo[0].strides));
+3473:                     c = math.cos(theta)
          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3473, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_cos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3473, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3473, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_5 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
            }
          }
          if (!__pyx_t_5) {
            __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3473, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_GOTREF(__pyx_t_23);
          } else {
            __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3473, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_5); __pyx_t_5 = NULL;
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_7);
            __pyx_t_7 = 0;
            __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_25, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3473, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_23); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3473, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_v_c = __pyx_t_3;
+3474:                     s = -math.sin(theta)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3474, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sin); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3474, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3474, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_25);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_25, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_25, __pyx_t_1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3474, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_23);
          } else {
            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3474, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_5, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3474, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          }
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_25 = PyNumber_Negative(__pyx_t_23); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3474, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_25); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3474, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_v_s = __pyx_t_3;
+3475:                     Io = I[xo, yo]
          __pyx_t_61 = __pyx_v_xo;
          __pyx_t_62 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_62, __pyx_pybuffernd_I.diminfo[1].strides));
+3476:                     delX = math.ceil(math.sqrt((MAJ * c) ** 2 + (MIN * s) ** 2))
          __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3476, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_ceil); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3476, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3476, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3476, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = PyFloat_FromDouble((powf((__pyx_v_MAJ * __pyx_v_c), 2.0) + powf((__pyx_v_MIN * __pyx_v_s), 2.0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3476, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_8) {
            __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3476, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_23);
          } else {
            __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3476, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3476, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_25 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_23); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3476, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_GOTREF(__pyx_t_25);
          } else {
            __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3476, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_GIVEREF(__pyx_t_23);
            PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_23);
            __pyx_t_23 = 0;
            __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3476, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_63 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_25); if (unlikely((__pyx_t_63 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3476, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_v_delX = __pyx_t_63;
+3477:                     delY = math.ceil(math.sqrt((MAJ * s) ** 2 + (MIN * c) ** 2))
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3477, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ceil); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3477, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3477, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3477, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_23 = PyFloat_FromDouble((powf((__pyx_v_MAJ * __pyx_v_s), 2.0) + powf((__pyx_v_MIN * __pyx_v_c), 2.0))); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 3477, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_1) {
            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_23); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3477, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_GOTREF(__pyx_t_5);
          } else {
            __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3477, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
            __Pyx_GIVEREF(__pyx_t_23);
            PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_23);
            __pyx_t_23 = 0;
            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3477, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_25 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3477, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_GOTREF(__pyx_t_25);
          } else {
            __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3477, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3477, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_63 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_25); if (unlikely((__pyx_t_63 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3477, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_v_delY = __pyx_t_63;
+3478:                     red = col[k, 0]
          __pyx_t_63 = __pyx_v_k;
          __pyx_t_64 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_64, __pyx_pybuffernd_col.diminfo[1].strides));
+3479:                     green = col[k, 1]
          __pyx_t_65 = __pyx_v_k;
          __pyx_t_66 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_col.diminfo[1].strides));
+3480:                     blue = col[k, 2]
          __pyx_t_67 = __pyx_v_k;
          __pyx_t_68 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_col.diminfo[1].strides));
 3481: 
+3482:                     for deli in range(0, delX + 1):
          __pyx_t_69 = (__pyx_v_delX + 1);
          for (__pyx_t_70 = 0; __pyx_t_70 < __pyx_t_69; __pyx_t_70+=1) {
            __pyx_v_deli = __pyx_t_70;
+3483:                         for delj in range(0, delY + 1):
            __pyx_t_71 = (__pyx_v_delY + 1);
            for (__pyx_t_72 = 0; __pyx_t_72 < __pyx_t_71; __pyx_t_72+=1) {
              __pyx_v_delj = __pyx_t_72;
+3484:                             if ((deli * c - delj * s) / MAJ) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_21 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_MAJ), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_21) {
/* … */
              }
            }
          }
 3485: 
+3486:                                 i, j = xo + deli, yo + delj
                __pyx_t_73 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_74 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_73;
                __pyx_v_j = __pyx_t_74;
+3487:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_75 = (0 <= __pyx_v_i);
                if (__pyx_t_75) {
                  __pyx_t_75 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_76 = (__pyx_t_75 != 0);
                if (__pyx_t_76) {
                } else {
                  __pyx_t_21 = __pyx_t_76;
                  goto __pyx_L26_bool_binop_done;
                }
                __pyx_t_76 = (0 <= __pyx_v_j);
                if (__pyx_t_76) {
                  __pyx_t_76 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_75 = (__pyx_t_76 != 0);
                __pyx_t_21 = __pyx_t_75;
                __pyx_L26_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+3488:                                     if I[i, j] == 0:
                  __pyx_t_74 = __pyx_v_i;
                  __pyx_t_73 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+3489:                                         for dum in range(1):
                    for (__pyx_t_77 = 0; __pyx_t_77 < 1; __pyx_t_77+=1) {
                      __pyx_v_dum = __pyx_t_77;
 3490: 
+3491:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3492:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_78 = (__pyx_v_i - 1);
                        __pyx_t_79 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_79, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3493:                                                     I[i, j] = Io
                          __pyx_t_80 = __pyx_v_i;
                          __pyx_t_81 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_81, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3494:                                                     Col[i, j, 2] = red
                          __pyx_t_82 = __pyx_v_i;
                          __pyx_t_83 = __pyx_v_j;
                          __pyx_t_84 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_83, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_84, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3495:                                                     Col[i, j, 1] = green
                          __pyx_t_85 = __pyx_v_i;
                          __pyx_t_86 = __pyx_v_j;
                          __pyx_t_87 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_87, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3496:                                                     Col[i, j, 0] = blue
                          __pyx_t_88 = __pyx_v_i;
                          __pyx_t_89 = __pyx_v_j;
                          __pyx_t_90 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_90, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3497:                                                     a[k] = 1
                          __pyx_t_91 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3498:                                                     break
                          goto __pyx_L30_break;
+3499:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3500:                                                 if I[i, j - 1] == Io:
                        __pyx_t_92 = __pyx_v_i;
                        __pyx_t_93 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3501:                                                     I[i, j] = Io
                          __pyx_t_94 = __pyx_v_i;
                          __pyx_t_95 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_95, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3502:                                                     Col[i, j, 2] = red
                          __pyx_t_96 = __pyx_v_i;
                          __pyx_t_97 = __pyx_v_j;
                          __pyx_t_98 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_97, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3503:                                                     Col[i, j, 1] = green
                          __pyx_t_99 = __pyx_v_i;
                          __pyx_t_100 = __pyx_v_j;
                          __pyx_t_101 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_101, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3504:                                                     Col[i, j, 0] = blue
                          __pyx_t_102 = __pyx_v_i;
                          __pyx_t_103 = __pyx_v_j;
                          __pyx_t_104 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_103, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_104, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3505:                                                     a[k] = 1
                          __pyx_t_105 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3506:                                                     break
                          goto __pyx_L30_break;
 3507: 
+3508:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3509:                                                 if I[i, j + 1] == Io:
                        __pyx_t_106 = __pyx_v_i;
                        __pyx_t_107 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3510:                                                     I[i, j] = Io
                          __pyx_t_108 = __pyx_v_i;
                          __pyx_t_109 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3511:                                                     Col[i, j, 2] = red
                          __pyx_t_110 = __pyx_v_i;
                          __pyx_t_111 = __pyx_v_j;
                          __pyx_t_112 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_112, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3512:                                                     Col[i, j, 1] = green
                          __pyx_t_113 = __pyx_v_i;
                          __pyx_t_114 = __pyx_v_j;
                          __pyx_t_115 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3513:                                                     Col[i, j, 0] = blue
                          __pyx_t_116 = __pyx_v_i;
                          __pyx_t_117 = __pyx_v_j;
                          __pyx_t_118 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3514:                                                     a[k] = 1
                          __pyx_t_119 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3515:                                                     break
                          goto __pyx_L30_break;
 3516: 
 3517: 
+3518:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
                    }
                    __pyx_L30_break:;
+3519:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_120 = (__pyx_v_i + 1);
                        __pyx_t_121 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_121, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3520:                                                     I[i, j] = Io
                          __pyx_t_122 = __pyx_v_i;
                          __pyx_t_123 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_123, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3521:                                                     Col[i, j, 2] = red
                          __pyx_t_124 = __pyx_v_i;
                          __pyx_t_125 = __pyx_v_j;
                          __pyx_t_126 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3522:                                                     Col[i, j, 1] = green
                          __pyx_t_127 = __pyx_v_i;
                          __pyx_t_128 = __pyx_v_j;
                          __pyx_t_129 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3523:                                                     Col[i, j, 0] = blue
                          __pyx_t_130 = __pyx_v_i;
                          __pyx_t_131 = __pyx_v_j;
                          __pyx_t_132 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3524:                                                     a[k] = 1
                          __pyx_t_133 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3525:                                                     break
                          goto __pyx_L30_break;
 3526: 
 3527: 
+3528:                                 i, j = xo - deli, yo - delj
                __pyx_t_77 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_134 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_77;
                __pyx_v_j = __pyx_t_134;
+3529:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_75 = (0 <= __pyx_v_i);
                if (__pyx_t_75) {
                  __pyx_t_75 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_76 = (__pyx_t_75 != 0);
                if (__pyx_t_76) {
                } else {
                  __pyx_t_21 = __pyx_t_76;
                  goto __pyx_L40_bool_binop_done;
                }
                __pyx_t_76 = (0 <= __pyx_v_j);
                if (__pyx_t_76) {
                  __pyx_t_76 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_75 = (__pyx_t_76 != 0);
                __pyx_t_21 = __pyx_t_75;
                __pyx_L40_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+3530:                                     if I[i, j] == 0:
                  __pyx_t_134 = __pyx_v_i;
                  __pyx_t_77 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_77, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+3531:                                         for dum in range(1):
                    for (__pyx_t_135 = 0; __pyx_t_135 < 1; __pyx_t_135+=1) {
                      __pyx_v_dum = __pyx_t_135;
 3532: 
+3533:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3534:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_136 = (__pyx_v_i - 1);
                        __pyx_t_137 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_136, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_137, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3535:                                                     I[i, j] = Io
                          __pyx_t_138 = __pyx_v_i;
                          __pyx_t_139 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_138, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_139, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3536:                                                     Col[i, j, 2] = red
                          __pyx_t_140 = __pyx_v_i;
                          __pyx_t_141 = __pyx_v_j;
                          __pyx_t_142 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3537:                                                     Col[i, j, 1] = green
                          __pyx_t_143 = __pyx_v_i;
                          __pyx_t_144 = __pyx_v_j;
                          __pyx_t_145 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3538:                                                     Col[i, j, 0] = blue
                          __pyx_t_146 = __pyx_v_i;
                          __pyx_t_147 = __pyx_v_j;
                          __pyx_t_148 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_148, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3539:                                                     a[k] = 1
                          __pyx_t_149 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3540:                                                     break
                          goto __pyx_L44_break;
+3541:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3542:                                                 if I[i, j - 1] == Io:
                        __pyx_t_150 = __pyx_v_i;
                        __pyx_t_151 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_151, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3543:                                                     I[i, j] = Io
                          __pyx_t_152 = __pyx_v_i;
                          __pyx_t_153 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_152, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_153, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3544:                                                     Col[i, j, 2] = red
                          __pyx_t_154 = __pyx_v_i;
                          __pyx_t_155 = __pyx_v_j;
                          __pyx_t_156 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_155, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_156, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3545:                                                     Col[i, j, 1] = green
                          __pyx_t_157 = __pyx_v_i;
                          __pyx_t_158 = __pyx_v_j;
                          __pyx_t_159 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3546:                                                     Col[i, j, 0] = blue
                          __pyx_t_160 = __pyx_v_i;
                          __pyx_t_161 = __pyx_v_j;
                          __pyx_t_162 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3547:                                                     a[k] = 1
                          __pyx_t_163 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3548:                                                     break
                          goto __pyx_L44_break;
 3549: 
+3550:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3551:                                                 if I[i, j + 1] == Io:
                        __pyx_t_164 = __pyx_v_i;
                        __pyx_t_165 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_164, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_165, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3552:                                                     I[i, j] = Io
                          __pyx_t_166 = __pyx_v_i;
                          __pyx_t_167 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_166, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_167, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3553:                                                     Col[i, j, 2] = red
                          __pyx_t_168 = __pyx_v_i;
                          __pyx_t_169 = __pyx_v_j;
                          __pyx_t_170 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_170, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3554:                                                     Col[i, j, 1] = green
                          __pyx_t_171 = __pyx_v_i;
                          __pyx_t_172 = __pyx_v_j;
                          __pyx_t_173 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_172, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_173, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3555:                                                     Col[i, j, 0] = blue
                          __pyx_t_174 = __pyx_v_i;
                          __pyx_t_175 = __pyx_v_j;
                          __pyx_t_176 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_174, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_175, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_176, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3556:                                                     a[k] = 1
                          __pyx_t_177 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3557:                                                     break
                          goto __pyx_L44_break;
 3558: 
 3559: 
+3560:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
                    }
                    __pyx_L44_break:;
+3561:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_178 = (__pyx_v_i + 1);
                        __pyx_t_179 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_178, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_179, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3562:                                                     I[i, j] = Io
                          __pyx_t_180 = __pyx_v_i;
                          __pyx_t_181 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_180, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_181, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3563:                                                     Col[i, j, 2] = red
                          __pyx_t_182 = __pyx_v_i;
                          __pyx_t_183 = __pyx_v_j;
                          __pyx_t_184 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_183, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3564:                                                     Col[i, j, 1] = green
                          __pyx_t_185 = __pyx_v_i;
                          __pyx_t_186 = __pyx_v_j;
                          __pyx_t_187 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3565:                                                     Col[i, j, 0] = blue
                          __pyx_t_188 = __pyx_v_i;
                          __pyx_t_189 = __pyx_v_j;
                          __pyx_t_190 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_190, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3566:                                                     a[k] = 1
                          __pyx_t_191 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_191, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3567:                                                     break
                          goto __pyx_L44_break;
 3568: 
 3569: 
+3570:                     for deli in range(0, -delX - 1, -1):
          __pyx_t_69 = ((-__pyx_v_delX) - 1);
          for (__pyx_t_70 = 0; __pyx_t_70 > __pyx_t_69; __pyx_t_70-=1) {
            __pyx_v_deli = __pyx_t_70;
+3571:                         for delj in range(0, delY + 1):
            __pyx_t_71 = (__pyx_v_delY + 1);
            for (__pyx_t_72 = 0; __pyx_t_72 < __pyx_t_71; __pyx_t_72+=1) {
              __pyx_v_delj = __pyx_t_72;
+3572:                             if ((deli * c - delj * s) / MAJ) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_21 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_MAJ), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_21) {
/* … */
              }
            }
          }
 3573: 
+3574:                                 i, j = xo + deli, yo + delj
                __pyx_t_135 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_192 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_135;
                __pyx_v_j = __pyx_t_192;
+3575:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_75 = (0 <= __pyx_v_i);
                if (__pyx_t_75) {
                  __pyx_t_75 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_76 = (__pyx_t_75 != 0);
                if (__pyx_t_76) {
                } else {
                  __pyx_t_21 = __pyx_t_76;
                  goto __pyx_L59_bool_binop_done;
                }
                __pyx_t_76 = (0 <= __pyx_v_j);
                if (__pyx_t_76) {
                  __pyx_t_76 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_75 = (__pyx_t_76 != 0);
                __pyx_t_21 = __pyx_t_75;
                __pyx_L59_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+3576:                                     if I[i, j] == 0:
                  __pyx_t_192 = __pyx_v_i;
                  __pyx_t_135 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_192, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_135, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+3577:                                         for dum in range(1):
                    for (__pyx_t_193 = 0; __pyx_t_193 < 1; __pyx_t_193+=1) {
                      __pyx_v_dum = __pyx_t_193;
 3578: 
+3579:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3580:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_194 = (__pyx_v_i - 1);
                        __pyx_t_195 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_194, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_195, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3581:                                                     I[i, j] = Io
                          __pyx_t_196 = __pyx_v_i;
                          __pyx_t_197 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_196, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_197, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3582:                                                     Col[i, j, 2] = red
                          __pyx_t_198 = __pyx_v_i;
                          __pyx_t_199 = __pyx_v_j;
                          __pyx_t_200 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_199, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_200, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3583:                                                     Col[i, j, 1] = green
                          __pyx_t_201 = __pyx_v_i;
                          __pyx_t_202 = __pyx_v_j;
                          __pyx_t_203 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_201, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_202, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3584:                                                     Col[i, j, 0] = blue
                          __pyx_t_204 = __pyx_v_i;
                          __pyx_t_205 = __pyx_v_j;
                          __pyx_t_206 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_204, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_205, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_206, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3585:                                                     a[k] = 1
                          __pyx_t_207 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_207, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3586:                                                     break
                          goto __pyx_L63_break;
+3587:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3588:                                                 if I[i, j - 1] == Io:
                        __pyx_t_208 = __pyx_v_i;
                        __pyx_t_209 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_208, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_209, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3589:                                                     I[i, j] = Io
                          __pyx_t_210 = __pyx_v_i;
                          __pyx_t_211 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_210, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_211, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3590:                                                     Col[i, j, 2] = red
                          __pyx_t_212 = __pyx_v_i;
                          __pyx_t_213 = __pyx_v_j;
                          __pyx_t_214 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_212, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_213, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_214, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3591:                                                     Col[i, j, 1] = green
                          __pyx_t_215 = __pyx_v_i;
                          __pyx_t_216 = __pyx_v_j;
                          __pyx_t_217 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_215, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_216, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_217, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3592:                                                     Col[i, j, 0] = blue
                          __pyx_t_218 = __pyx_v_i;
                          __pyx_t_219 = __pyx_v_j;
                          __pyx_t_220 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_218, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_219, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_220, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3593:                                                     a[k] = 1
                          __pyx_t_221 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_221, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3594:                                                     break
                          goto __pyx_L63_break;
 3595: 
+3596:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3597:                                                 if I[i, j + 1] == Io:
                        __pyx_t_222 = __pyx_v_i;
                        __pyx_t_223 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_222, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_223, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3598:                                                     I[i, j] = Io
                          __pyx_t_224 = __pyx_v_i;
                          __pyx_t_225 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_224, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_225, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3599:                                                     Col[i, j, 2] = red
                          __pyx_t_226 = __pyx_v_i;
                          __pyx_t_227 = __pyx_v_j;
                          __pyx_t_228 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_226, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_227, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_228, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3600:                                                     Col[i, j, 1] = green
                          __pyx_t_229 = __pyx_v_i;
                          __pyx_t_230 = __pyx_v_j;
                          __pyx_t_231 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_229, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_230, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3601:                                                     Col[i, j, 0] = blue
                          __pyx_t_232 = __pyx_v_i;
                          __pyx_t_233 = __pyx_v_j;
                          __pyx_t_234 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_232, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_233, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_234, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3602:                                                     a[k] = 1
                          __pyx_t_235 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_235, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3603:                                                     break
                          goto __pyx_L63_break;
 3604: 
 3605: 
+3606:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
                    }
                    __pyx_L63_break:;
+3607:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_236 = (__pyx_v_i + 1);
                        __pyx_t_237 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_236, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_237, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3608:                                                     I[i, j] = Io
                          __pyx_t_238 = __pyx_v_i;
                          __pyx_t_239 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_238, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_239, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3609:                                                     Col[i, j, 2] = red
                          __pyx_t_240 = __pyx_v_i;
                          __pyx_t_241 = __pyx_v_j;
                          __pyx_t_242 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_240, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_241, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_242, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3610:                                                     Col[i, j, 1] = green
                          __pyx_t_243 = __pyx_v_i;
                          __pyx_t_244 = __pyx_v_j;
                          __pyx_t_245 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_243, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_244, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_245, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3611:                                                     Col[i, j, 0] = blue
                          __pyx_t_246 = __pyx_v_i;
                          __pyx_t_247 = __pyx_v_j;
                          __pyx_t_248 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_246, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_247, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_248, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3612:                                                     a[k] = 1
                          __pyx_t_249 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_249, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3613:                                                     break
                          goto __pyx_L63_break;
 3614: 
 3615: 
+3616:                                 i, j = xo - deli, yo - delj
                __pyx_t_193 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_250 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_193;
                __pyx_v_j = __pyx_t_250;
+3617:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_75 = (0 <= __pyx_v_i);
                if (__pyx_t_75) {
                  __pyx_t_75 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_76 = (__pyx_t_75 != 0);
                if (__pyx_t_76) {
                } else {
                  __pyx_t_21 = __pyx_t_76;
                  goto __pyx_L73_bool_binop_done;
                }
                __pyx_t_76 = (0 <= __pyx_v_j);
                if (__pyx_t_76) {
                  __pyx_t_76 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_75 = (__pyx_t_76 != 0);
                __pyx_t_21 = __pyx_t_75;
                __pyx_L73_bool_binop_done:;
                if (__pyx_t_21) {
/* … */
                }
+3618:                                     if I[i, j] == 0:
                  __pyx_t_250 = __pyx_v_i;
                  __pyx_t_193 = __pyx_v_j;
                  __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_250, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_193, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_21) {
/* … */
                  }
+3619:                                         for dum in range(1):
                    for (__pyx_t_251 = 0; __pyx_t_251 < 1; __pyx_t_251+=1) {
                      __pyx_v_dum = __pyx_t_251;
 3620: 
+3621:                                             if i > 0:
                      __pyx_t_21 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3622:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_252 = (__pyx_v_i - 1);
                        __pyx_t_253 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_252, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_253, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3623:                                                     I[i, j] = Io
                          __pyx_t_254 = __pyx_v_i;
                          __pyx_t_255 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_254, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_255, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3624:                                                     Col[i, j, 2] = red
                          __pyx_t_256 = __pyx_v_i;
                          __pyx_t_257 = __pyx_v_j;
                          __pyx_t_258 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_256, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_257, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_258, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3625:                                                     Col[i, j, 1] = green
                          __pyx_t_259 = __pyx_v_i;
                          __pyx_t_260 = __pyx_v_j;
                          __pyx_t_261 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_259, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_260, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_261, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3626:                                                     Col[i, j, 0] = blue
                          __pyx_t_262 = __pyx_v_i;
                          __pyx_t_263 = __pyx_v_j;
                          __pyx_t_264 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_262, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_263, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_264, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3627:                                                     a[k] = 1
                          __pyx_t_265 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_265, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3628:                                                     break
                          goto __pyx_L77_break;
+3629:                                             if j > 0:
                      __pyx_t_21 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3630:                                                 if I[i, j - 1] == Io:
                        __pyx_t_266 = __pyx_v_i;
                        __pyx_t_267 = (__pyx_v_j - 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_266, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_267, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3631:                                                     I[i, j] = Io
                          __pyx_t_268 = __pyx_v_i;
                          __pyx_t_269 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_268, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_269, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3632:                                                     Col[i, j, 2] = red
                          __pyx_t_270 = __pyx_v_i;
                          __pyx_t_271 = __pyx_v_j;
                          __pyx_t_272 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_270, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_271, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_272, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3633:                                                     Col[i, j, 1] = green
                          __pyx_t_273 = __pyx_v_i;
                          __pyx_t_274 = __pyx_v_j;
                          __pyx_t_275 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_273, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_274, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_275, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3634:                                                     Col[i, j, 0] = blue
                          __pyx_t_276 = __pyx_v_i;
                          __pyx_t_277 = __pyx_v_j;
                          __pyx_t_278 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_276, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_277, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_278, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3635:                                                     a[k] = 1
                          __pyx_t_279 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_279, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3636:                                                     break
                          goto __pyx_L77_break;
 3637: 
+3638:                                             if j < n - 1:
                      __pyx_t_21 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
+3639:                                                 if I[i, j + 1] == Io:
                        __pyx_t_280 = __pyx_v_i;
                        __pyx_t_281 = (__pyx_v_j + 1);
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_280, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_281, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3640:                                                     I[i, j] = Io
                          __pyx_t_282 = __pyx_v_i;
                          __pyx_t_283 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_282, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_283, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3641:                                                     Col[i, j, 2] = red
                          __pyx_t_284 = __pyx_v_i;
                          __pyx_t_285 = __pyx_v_j;
                          __pyx_t_286 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_285, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_286, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3642:                                                     Col[i, j, 1] = green
                          __pyx_t_287 = __pyx_v_i;
                          __pyx_t_288 = __pyx_v_j;
                          __pyx_t_289 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_287, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_288, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_289, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3643:                                                     Col[i, j, 0] = blue
                          __pyx_t_290 = __pyx_v_i;
                          __pyx_t_291 = __pyx_v_j;
                          __pyx_t_292 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_290, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_291, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_292, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3644:                                                     a[k] = 1
                          __pyx_t_293 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_293, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3645:                                                     break
                          goto __pyx_L77_break;
 3646: 
 3647: 
+3648:                                             if i < m - 1:
                      __pyx_t_21 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_21) {
/* … */
                      }
                    }
                    __pyx_L77_break:;
+3649:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_294 = (__pyx_v_i + 1);
                        __pyx_t_295 = __pyx_v_j;
                        __pyx_t_21 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_294, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_295, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_21) {
/* … */
                        }
+3650:                                                     I[i, j] = Io
                          __pyx_t_296 = __pyx_v_i;
                          __pyx_t_297 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_296, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_297, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3651:                                                     Col[i, j, 2] = red
                          __pyx_t_298 = __pyx_v_i;
                          __pyx_t_299 = __pyx_v_j;
                          __pyx_t_300 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_298, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_299, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_300, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3652:                                                     Col[i, j, 1] = green
                          __pyx_t_301 = __pyx_v_i;
                          __pyx_t_302 = __pyx_v_j;
                          __pyx_t_303 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_301, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_302, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_303, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3653:                                                     Col[i, j, 0] = blue
                          __pyx_t_304 = __pyx_v_i;
                          __pyx_t_305 = __pyx_v_j;
                          __pyx_t_306 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_304, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_305, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_306, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3654:                                                     a[k] = 1
                          __pyx_t_307 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_307, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3655:                                                     break
                          goto __pyx_L77_break;
 3656: 
 3657: 
 3658: 
+3659:                     if a[k] == 0:
          __pyx_t_69 = __pyx_v_k;
          __pyx_t_21 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_21) {
/* … */
          }
+3660:                         xmin = max(0, xo - delX)
            __pyx_t_70 = (__pyx_v_xo - __pyx_v_delX);
            __pyx_t_308 = 0;
            if (((__pyx_t_70 > __pyx_t_308) != 0)) {
              __pyx_t_71 = __pyx_t_70;
            } else {
              __pyx_t_71 = __pyx_t_308;
            }
            __pyx_v_xmin = __pyx_t_71;
+3661:                         xmax = min(m - 1, xo + delX)
            __pyx_t_71 = (__pyx_v_xo + __pyx_v_delX);
            __pyx_t_70 = (__pyx_v_m - 1);
            if (((__pyx_t_71 < __pyx_t_70) != 0)) {
              __pyx_t_72 = __pyx_t_71;
            } else {
              __pyx_t_72 = __pyx_t_70;
            }
            __pyx_v_xmax = __pyx_t_72;
+3662:                         ymin = max(0, yo - delY)
            __pyx_t_72 = (__pyx_v_yo - __pyx_v_delY);
            __pyx_t_308 = 0;
            if (((__pyx_t_72 > __pyx_t_308) != 0)) {
              __pyx_t_71 = __pyx_t_72;
            } else {
              __pyx_t_71 = __pyx_t_308;
            }
            __pyx_v_ymin = __pyx_t_71;
+3663:                         ymax = min(n - 1, yo + delY)
            __pyx_t_71 = (__pyx_v_yo + __pyx_v_delY);
            __pyx_t_72 = (__pyx_v_n - 1);
            if (((__pyx_t_71 < __pyx_t_72) != 0)) {
              __pyx_t_70 = __pyx_t_71;
            } else {
              __pyx_t_70 = __pyx_t_72;
            }
            __pyx_v_ymax = __pyx_t_70;
+3664:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_70 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 3665: 
+3666:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+3667:             MAJ = MAJ + 1.0
      __pyx_v_MAJ = (__pyx_v_MAJ + 1.0);
+3668:             MIN = MAJ / R
      __pyx_v_MIN = (__pyx_v_MAJ / __pyx_v_R);
    }
+3669:         if asy == 0:
    __pyx_t_21 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_21) {
/* … */
    }
+3670:             break
      goto __pyx_L12_break;
 3671:         else:
+3672:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_6 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3672, __pyx_L1_error)
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_all); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3672, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
        }
      }
      if (__pyx_t_6) {
        __pyx_t_25 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3672, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        __pyx_t_25 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3672, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = __Pyx_PyInt_EqObjC(__pyx_t_25, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3672, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_21 < 0)) __PYX_ERR(0, 3672, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (__pyx_t_21) {
/* … */
      }
+3673:                 break
        goto __pyx_L12_break;
 3674:             else:
+3675:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3675, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+3676:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
        __pyx_t_8 = 0;
        __pyx_t_6 = 0;
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3676, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3676, __pyx_L1_error)
        __pyx_t_9 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3676, __pyx_L1_error)
        }
        __pyx_t_9 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
+3677:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ones); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_int8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3677, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3677, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_8);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3677, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_8));
        __pyx_t_8 = 0;
+3678:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3678, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_centroids); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3678, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3678, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3678, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3678, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_23 = NULL;
        __pyx_t_24 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_23)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_23);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_24 = 1;
          }
        }
        __pyx_t_1 = PyTuple_New(4+__pyx_t_24); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3678, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__pyx_t_23) {
          __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_23); __pyx_t_23 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_24, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_24, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_24, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_24, __pyx_t_25);
        __pyx_t_7 = 0;
        __pyx_t_5 = 0;
        __pyx_t_25 = 0;
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3678, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) {
          PyObject* sequence = __pyx_t_8;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 3678, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_1);
          #else
          __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3678, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3678, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          #endif
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_25 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3678, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_22 = Py_TYPE(__pyx_t_25)->tp_iternext;
          index = 0; __pyx_t_6 = __pyx_t_22(__pyx_t_25); if (unlikely(!__pyx_t_6)) goto __pyx_L89_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_6);
          index = 1; __pyx_t_1 = __pyx_t_22(__pyx_t_25); if (unlikely(!__pyx_t_1)) goto __pyx_L89_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_1);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_25), 2) < 0) __PYX_ERR(0, 3678, __pyx_L1_error)
          __pyx_t_22 = NULL;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          goto __pyx_L90_unpacking_done;
          __pyx_L89_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_22 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 3678, __pyx_L1_error)
          __pyx_L90_unpacking_done:;
        }
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3678, __pyx_L1_error)
        if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3678, __pyx_L1_error)
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_6);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3678, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3678, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_1));
        __pyx_t_1 = 0;
+3679:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
+3680:     toc = time.time()
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (__pyx_t_1) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3680, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3680, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_20 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3680, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_toc = __pyx_t_20;
+3681:     obj.exetime = toc - tic
  __pyx_t_8 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_8) < 0) __PYX_ERR(0, 3681, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+3682:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 3682, __pyx_L1_error)
+3683:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 3683, __pyx_L1_error)
+3684:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 3684, __pyx_L1_error)
+3685:     obj.Thetavalues = Theta
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Thetavalues, ((PyObject *)__pyx_v_Theta)) < 0) __PYX_ERR(0, 3685, __pyx_L1_error)
+3686:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 3686, __pyx_L1_error)
+3687:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 3688: 
+3689: def Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_35Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_35Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot = {"Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot", (PyCFunction)__pyx_pw_9libEVOLVE_35Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_35Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_34Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_34Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_R;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Adotfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  PY_LONG_LONG __pyx_v_imin;
  PY_LONG_LONG __pyx_v_imax;
  PY_LONG_LONG __pyx_v_jmin;
  PY_LONG_LONG __pyx_v_jmax;
  PY_LONG_LONG __pyx_v_io;
  PY_LONG_LONG __pyx_v_jo;
  PY_LONG_LONG __pyx_v_go;
  PY_LONG_LONG __pyx_v_found;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_l1;
  PY_LONG_LONG __pyx_v_l2;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_MAJceil;
  PY_LONG_LONG __pyx_v_MINceil;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_adotValmax;
  float __pyx_v_tmp;
  float __pyx_v_MIN;
  float __pyx_v_dr;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_adotVal = 0;
  PyArrayObject *__pyx_v_II = 0;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_II;
  __Pyx_Buffer __pyx_pybuffer_II;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_adotVal;
  __Pyx_Buffer __pyx_pybuffer_adotVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_adotVal.pybuffer.buf = NULL;
  __pyx_pybuffer_adotVal.refcount = 0;
  __pyx_pybuffernd_adotVal.data = NULL;
  __pyx_pybuffernd_adotVal.rcbuffer = &__pyx_pybuffer_adotVal;
  __pyx_pybuffer_II.pybuffer.buf = NULL;
  __pyx_pybuffer_II.refcount = 0;
  __pyx_pybuffernd_II.data = NULL;
  __pyx_pybuffernd_II.rcbuffer = &__pyx_pybuffer_II;
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_27);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Adotfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_adotVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_II);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__45 = PyTuple_Pack(70, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_R, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Adotfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_MN, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_imin, __pyx_n_s_imax, __pyx_n_s_jmin, __pyx_n_s_jmax, __pyx_n_s_io, __pyx_n_s_jo, __pyx_n_s_go, __pyx_n_s_found, __pyx_n_s_dum, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_count, __pyx_n_s_l1, __pyx_n_s_l2, __pyx_n_s_countim, __pyx_n_s_MAJceil, __pyx_n_s_MINceil, __pyx_n_s_Iter, __pyx_n_s_adotValmax, __pyx_n_s_tmp, __pyx_n_s_MIN, __pyx_n_s_dr, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_adotVal, __pyx_n_s_II, __pyx_n_s_MAJ, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 3689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__45);
  __Pyx_GIVEREF(__pyx_tuple__45);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_35Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_without_theta_with_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_8, __pyx_t_2) < 0) __PYX_ERR(0, 3689, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 70, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_8, 3689, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 3689, __pyx_L1_error)
 3690: 
 3691:     # Grabbing data from the input object
+3692:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3692, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+3693:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3693, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3693, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+3694:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3694, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3694, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+3695:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3695, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+3696:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3696, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+3697:     cdef float R = obj.R
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_R); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3697, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3697, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_R = __pyx_t_3;
+3698:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3698, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+3699:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3699, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+3700:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3700, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_4;
+3701:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3701, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_4;
+3702:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+3703:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+3704:     Adotfunc = obj.Adotfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Adotfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Adotfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 3705: 
 3706: 
 3707:     # Declaring other variables
 3708:     cdef double tic, toc
 3709:     cdef long long deli, delj, MN, PN, PE, PW, PS, Io, win, xmin, xmax, ymin, ymax, imin, imax, jmin, jmax, io, jo, go, found, dum, i, j, k, xo, yo, count, l1, l2, countim, MAJceil, MINceil, Iter
 3710:     cdef float adotValmax, tmp, MIN, dr, theta, c, s, red, green, blue
+3711:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3711, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3711, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+3712:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3712, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3712, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3713:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 3713, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3713, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3713, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+3714:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3714, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3714, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+3715:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 3715, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3715, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3715, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+3716:     cdef np.ndarray[np.float64_t, ndim = 1] adotVal = np.zeros(p, dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3716, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_adotVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3716, __pyx_L1_error)
    } else {__pyx_pybuffernd_adotVal.diminfo[0].strides = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_adotVal.diminfo[0].shape = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_adotVal = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3717:     cdef np.ndarray[np.int_t, ndim = 2] II = np.zeros((m, n), dtype=np.int)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3717, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_II.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_II = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_II.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3717, __pyx_L1_error)
    } else {__pyx_pybuffernd_II.diminfo[0].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_II.diminfo[0].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_II.diminfo[1].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_II.diminfo[1].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_II = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+3718:     cdef np.ndarray[np.float64_t, ndim = 1] MAJ = np.zeros(p, dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3718, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3718, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3719:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3719, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3719, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+3720:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3720, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 3720, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3721:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3721, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3721, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3721, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3722:     col = np.random.random((p, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3722, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3722, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3722, __pyx_L1_error)
  }
  __pyx_t_18 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_1));
  __pyx_t_1 = 0;
+3723:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3723, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3723, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3723, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tic = __pyx_t_22;
 3724: 
+3725:     if pdelNxy == []:
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3725, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 3725, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_23) {
/* … */
    goto __pyx_L3;
  }
+3726:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_7 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3726, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3726, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_5 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_5)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_24(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_6 = __pyx_t_24(__pyx_t_5); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_5), 2) < 0) __PYX_ERR(0, 3726, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3726, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3726, __pyx_L1_error)
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3726, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3726, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3726, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;
 3727:     else:
+3728:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_25 = NULL;
    __pyx_t_26 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_25)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_25);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_26 = 1;
      }
    }
    __pyx_t_27 = PyTuple_New(7+__pyx_t_26); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    if (__pyx_t_25) {
      __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_25); __pyx_t_25 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_27, 0+__pyx_t_26, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_27, 1+__pyx_t_26, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_27, 2+__pyx_t_26, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_27, 3+__pyx_t_26, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_27, 4+__pyx_t_26, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_27, 5+__pyx_t_26, __pyx_t_8);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_27, 6+__pyx_t_26, __pyx_int_1);
    __pyx_t_6 = 0;
    __pyx_t_5 = 0;
    __pyx_t_8 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_27, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3728, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_27 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_27 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_27);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3728, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_27 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3728, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3728, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_8)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_24(__pyx_t_8); if (unlikely(!__pyx_t_1)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_27 = __pyx_t_24(__pyx_t_8); if (unlikely(!__pyx_t_27)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_27);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_8), 2) < 0) __PYX_ERR(0, 3728, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3728, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3728, __pyx_L1_error)
    if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3728, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3728, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_27);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3728, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_27));
    __pyx_t_27 = 0;
  }
  __pyx_L3:;
 3729: 
+3730:     if labelsorted == 1:
  __pyx_t_23 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_23) {
/* … */
  }
+3731:         X, Y = labelsort(n, X, Y)
    __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = NULL;
    __pyx_t_26 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_27);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_27, function);
        __pyx_t_26 = 1;
      }
    }
    __pyx_t_5 = PyTuple_New(3+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, __pyx_t_1);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_26, ((PyObject *)__pyx_v_Y));
    __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3731, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_27 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_27 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_27 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3731, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3731, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3731, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_27 = __pyx_t_24(__pyx_t_1); if (unlikely(!__pyx_t_27)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_27);
      index = 1; __pyx_t_5 = __pyx_t_24(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_1), 2) < 0) __PYX_ERR(0, 3731, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3731, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3731, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3731, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_27);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3731, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_27));
    __pyx_t_27 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3731, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 3732: 
+3733:     Iter = 1
  __pyx_v_Iter = 1;
+3734:     while True:
  while (1) {
+3735:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
      __pyx_v_k = __pyx_t_28;
+3736:             I[X[k], Y[k]] = k + 1
      __pyx_t_29 = __pyx_v_k;
      __pyx_t_30 = __pyx_v_k;
      __pyx_t_31 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_32 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_32, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+3737:             adotVal[k] = Adotfunc(X[k], Y[k], k + 1 , 0, 1)
      __pyx_t_33 = __pyx_v_k;
      __pyx_t_5 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3737, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_34 = __pyx_v_k;
      __pyx_t_27 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3737, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3737, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_Adotfunc);
      __pyx_t_8 = __pyx_v_Adotfunc; __pyx_t_6 = NULL;
      __pyx_t_26 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_26 = 1;
        }
      }
      __pyx_t_25 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3737, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_26, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_27);
      PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_26, __pyx_t_27);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_26, __pyx_t_1);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_26, __pyx_int_0);
      __Pyx_INCREF(__pyx_int_1);
      __Pyx_GIVEREF(__pyx_int_1);
      PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_26, __pyx_int_1);
      __pyx_t_5 = 0;
      __pyx_t_27 = 0;
      __pyx_t_1 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3737, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 3737, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_36 = __pyx_v_k;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_35;
+3738:             Col[X[k], Y[k], 2] = col[k, 0]
      __pyx_t_37 = __pyx_v_k;
      __pyx_t_38 = 0;
      __pyx_t_39 = __pyx_v_k;
      __pyx_t_40 = __pyx_v_k;
      __pyx_t_41 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_42 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_43 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_43, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_col.diminfo[1].strides));
+3739:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_44 = __pyx_v_k;
      __pyx_t_45 = 1;
      __pyx_t_46 = __pyx_v_k;
      __pyx_t_47 = __pyx_v_k;
      __pyx_t_48 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_49 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_50 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_col.diminfo[1].strides));
+3740:             Col[X[k], Y[k], 0] = col[k, 2]
      __pyx_t_51 = __pyx_v_k;
      __pyx_t_52 = 2;
      __pyx_t_53 = __pyx_v_k;
      __pyx_t_54 = __pyx_v_k;
      __pyx_t_55 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_56 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_57 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_56, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_57, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_52, __pyx_pybuffernd_col.diminfo[1].strides));
    }
 3741: 
 3742: 
 3743: 
+3744:         adotValmax = max(adotVal)
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3744, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(((PyObject *)__pyx_v_adotVal));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_adotVal));
    PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_adotVal));
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3744, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_8); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 3744, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_v_adotValmax = __pyx_t_3;
 3745: 
+3746:         showriteframe(sa, sf, fd, 0, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, 0, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
 3747: 
+3748:         countim = 1
    __pyx_v_countim = 1;
+3749:         count = 0
    __pyx_v_count = 0;
+3750:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3750, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3750, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_25);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_25, function);
        }
      }
      if (!__pyx_t_7) {
        __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_25, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3750, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      } else {
        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3750, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3750, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      __pyx_t_25 = PyObject_RichCompare(__pyx_t_8, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_25); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3750, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_25); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 3750, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      if (!__pyx_t_23) break;
 3751: 
 3752: 
+3753:             adotValmax = 0
      __pyx_v_adotValmax = 0.0;
+3754:             for i in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_i = __pyx_t_28;
+3755:                 if a[i] == 1:
        __pyx_t_58 = __pyx_v_i;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_23) {
/* … */
        }
      }
+3756:                     tmp = adotVal[i]
          __pyx_t_59 = __pyx_v_i;
          __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_adotVal.diminfo[0].strides));
+3757:                     if tmp > adotValmax:
          __pyx_t_23 = ((__pyx_v_tmp > __pyx_v_adotValmax) != 0);
          if (__pyx_t_23) {
/* … */
          }
+3758:                         adotValmax = tmp
            __pyx_v_adotValmax = __pyx_v_tmp;
 3759: 
+3760:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+3761:                 if a[k] == 1:
        __pyx_t_60 = __pyx_v_k;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_23) {
/* … */
        }
      }
+3762:                     a[k] = 0
          __pyx_t_61 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+3763:                     xo = X[k]
          __pyx_t_62 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_X.diminfo[0].strides));
+3764:                     yo = Y[k]
          __pyx_t_63 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_Y.diminfo[0].strides));
+3765:                     Io = I[xo, yo]
          __pyx_t_64 = __pyx_v_xo;
          __pyx_t_65 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_65, __pyx_pybuffernd_I.diminfo[1].strides));
 3766: 
+3767:                     dr = adotVal[k] / adotValmax
          __pyx_t_66 = __pyx_v_k;
          __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_adotVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_adotValmax));
+3768:                     MAJ[k] = MAJ[k] + dr
          __pyx_t_67 = __pyx_v_k;
          __pyx_t_68 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + __pyx_v_dr);
+3769:                     MIN = MAJ[k] / R
          __pyx_t_69 = __pyx_v_k;
          __pyx_v_MIN = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_MAJ.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_R));
+3770:                     MAJceil = math.ceil(MAJ[k])
          __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3770, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ceil); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3770, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_70 = __pyx_v_k;
          __pyx_t_8 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_MAJ.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3770, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_25 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3770, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_GOTREF(__pyx_t_25);
          } else {
            __pyx_t_27 = PyTuple_New(1+1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3770, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_27, 0+1, __pyx_t_8);
            __pyx_t_8 = 0;
            __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_27, NULL); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3770, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_71 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_25); if (unlikely((__pyx_t_71 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3770, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_v_MAJceil = __pyx_t_71;
+3771:                     MINceil = math.ceil(MIN)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3771, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 3771, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = PyFloat_FromDouble(__pyx_v_MIN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3771, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_27);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_27, function);
            }
          }
          if (!__pyx_t_8) {
            __pyx_t_25 = __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_t_1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3771, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_25);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3771, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_7, NULL); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 3771, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_71 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_25); if (unlikely((__pyx_t_71 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 3771, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_v_MINceil = __pyx_t_71;
+3772:                     red = col[k, 0]
          __pyx_t_71 = __pyx_v_k;
          __pyx_t_72 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_col.diminfo[1].strides));
+3773:                     green = col[k, 1]
          __pyx_t_73 = __pyx_v_k;
          __pyx_t_74 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_col.diminfo[1].strides));
+3774:                     blue = col[k, 2]
          __pyx_t_75 = __pyx_v_k;
          __pyx_t_76 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_76, __pyx_pybuffernd_col.diminfo[1].strides));
 3775: 
+3776:                     imin, imax, jmin, jmax = xo, xo, yo, yo
          __pyx_t_77 = __pyx_v_xo;
          __pyx_t_78 = __pyx_v_xo;
          __pyx_t_79 = __pyx_v_yo;
          __pyx_t_80 = __pyx_v_yo;
          __pyx_v_imin = __pyx_t_77;
          __pyx_v_imax = __pyx_t_78;
          __pyx_v_jmin = __pyx_t_79;
          __pyx_v_jmax = __pyx_t_80;
 3777: 
+3778:                     for deli in range(0, MAJceil + 1):
          __pyx_t_80 = (__pyx_v_MAJceil + 1);
          for (__pyx_t_79 = 0; __pyx_t_79 < __pyx_t_80; __pyx_t_79+=1) {
            __pyx_v_deli = __pyx_t_79;
+3779:                         for delj in range(0, MINceil + 1):
            __pyx_t_78 = (__pyx_v_MINceil + 1);
            for (__pyx_t_77 = 0; __pyx_t_77 < __pyx_t_78; __pyx_t_77+=1) {
              __pyx_v_delj = __pyx_t_77;
+3780:                             if (deli / MAJ[k]) ** 2 + (delj / MIN) ** 2 <= 1:
              __pyx_t_81 = __pyx_v_k;
              __pyx_t_23 = (((pow((((__pyx_t_5numpy_float64_t)__pyx_v_deli) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((float)__pyx_v_delj) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
+3781:                                 for l1 in range(-1, 2, 2):
                for (__pyx_t_82 = -1L; __pyx_t_82 < 2; __pyx_t_82+=2) {
                  __pyx_v_l1 = __pyx_t_82;
+3782:                                     for l2 in range(-1, 2, 2):
                  for (__pyx_t_83 = -1L; __pyx_t_83 < 2; __pyx_t_83+=2) {
                    __pyx_v_l2 = __pyx_t_83;
+3783:                                         i, j = xo + l1 * deli, yo + l2 * delj
                    __pyx_t_84 = (__pyx_v_xo + (__pyx_v_l1 * __pyx_v_deli));
                    __pyx_t_85 = (__pyx_v_yo + (__pyx_v_l2 * __pyx_v_delj));
                    __pyx_v_i = __pyx_t_84;
                    __pyx_v_j = __pyx_t_85;
+3784:                                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                    __pyx_t_86 = (0 <= __pyx_v_i);
                    if (__pyx_t_86) {
                      __pyx_t_86 = (__pyx_v_i <= (__pyx_v_m - 1));
                    }
                    __pyx_t_87 = (__pyx_t_86 != 0);
                    if (__pyx_t_87) {
                    } else {
                      __pyx_t_23 = __pyx_t_87;
                      goto __pyx_L34_bool_binop_done;
                    }
                    __pyx_t_87 = (0 <= __pyx_v_j);
                    if (__pyx_t_87) {
                      __pyx_t_87 = (__pyx_v_j <= (__pyx_v_n - 1));
                    }
                    __pyx_t_86 = (__pyx_t_87 != 0);
                    __pyx_t_23 = __pyx_t_86;
                    __pyx_L34_bool_binop_done:;
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                }
+3785:                                             if I[i, j] == 0:
                      __pyx_t_85 = __pyx_v_i;
                      __pyx_t_84 = __pyx_v_j;
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_84, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3786:                                                 II[i, j] = Io
                        __pyx_t_88 = __pyx_v_i;
                        __pyx_t_89 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_II.diminfo[1].strides) = __pyx_v_Io;
+3787:                                                 count = count + 1
                        __pyx_v_count = (__pyx_v_count + 1);
+3788:                                                 if i > imax:
                        __pyx_t_23 = ((__pyx_v_i > __pyx_v_imax) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3789:                                                     imax = i
                          __pyx_v_imax = __pyx_v_i;
+3790:                                                 if i < imin:
                        __pyx_t_23 = ((__pyx_v_i < __pyx_v_imin) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3791:                                                     imin = i
                          __pyx_v_imin = __pyx_v_i;
+3792:                                                 if j > jmax:
                        __pyx_t_23 = ((__pyx_v_j > __pyx_v_jmax) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3793:                                                     jmax = j
                          __pyx_v_jmax = __pyx_v_j;
+3794:                                                 if j < jmin:
                        __pyx_t_23 = ((__pyx_v_j < __pyx_v_jmin) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3795:                                                     jmin = j
                          __pyx_v_jmin = __pyx_v_j;
 3796: 
+3797:                     if count > 0:
          __pyx_t_23 = ((__pyx_v_count > 0) != 0);
          if (__pyx_t_23) {
/* … */
          }
+3798:                         i = imin
            __pyx_v_i = __pyx_v_imin;
+3799:                         go = 1
            __pyx_v_go = 1;
+3800:                         found = 0
            __pyx_v_found = 0;
+3801:                         while go is True:
            while (1) {
              __pyx_t_23 = ((__pyx_v_go == 1) != 0);
              if (!__pyx_t_23) break;
+3802:                             for j in range(jmin, jmax + 1, 1):
              __pyx_t_80 = (__pyx_v_jmax + 1);
              for (__pyx_t_79 = __pyx_v_jmin; __pyx_t_79 < __pyx_t_80; __pyx_t_79+=1) {
                __pyx_v_j = __pyx_t_79;
+3803:                                 if II[i, j] == Io:
                __pyx_t_78 = __pyx_v_i;
                __pyx_t_77 = __pyx_v_j;
                __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_77, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                if (__pyx_t_23) {
/* … */
                }
              }
              __pyx_L45_break:;
+3804:                                     if i > 0:
                  __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+3805:                                         if  I[i - 1, j] == Io:
                    __pyx_t_82 = (__pyx_v_i - 1);
                    __pyx_t_83 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_83, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+3806:                                             io, jo = i, j
                      __pyx_t_90 = __pyx_v_i;
                      __pyx_t_91 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_90;
                      __pyx_v_jo = __pyx_t_91;
+3807:                                             go = 0
                      __pyx_v_go = 0;
+3808:                                             found = 1
                      __pyx_v_found = 1;
+3809:                                             break
                      goto __pyx_L45_break;
+3810:                                     if j > 0:
                  __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+3811:                                         if I[i, j - 1] == Io:
                    __pyx_t_91 = __pyx_v_i;
                    __pyx_t_90 = (__pyx_v_j - 1);
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_90, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+3812:                                             io, jo = i, j
                      __pyx_t_92 = __pyx_v_i;
                      __pyx_t_93 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_92;
                      __pyx_v_jo = __pyx_t_93;
+3813:                                             go = 0
                      __pyx_v_go = 0;
+3814:                                             found = 1
                      __pyx_v_found = 1;
+3815:                                             break
                      goto __pyx_L45_break;
 3816: 
+3817:                                     if j < n - 1:
                  __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+3818:                                         if I[i, j + 1] == Io:
                    __pyx_t_93 = __pyx_v_i;
                    __pyx_t_92 = (__pyx_v_j + 1);
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_92, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+3819:                                             io, jo = i, j
                      __pyx_t_94 = __pyx_v_i;
                      __pyx_t_95 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_94;
                      __pyx_v_jo = __pyx_t_95;
+3820:                                             go = 0
                      __pyx_v_go = 0;
+3821:                                             found = 1
                      __pyx_v_found = 1;
+3822:                                             break
                      goto __pyx_L45_break;
 3823: 
 3824: 
+3825:                                     if i < m - 1:
                  __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+3826:                                         if  I[i + 1, j] == Io:
                    __pyx_t_95 = (__pyx_v_i + 1);
                    __pyx_t_94 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+3827:                                             io, jo = i, j
                      __pyx_t_96 = __pyx_v_i;
                      __pyx_t_97 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_96;
                      __pyx_v_jo = __pyx_t_97;
+3828:                                             go = 0
                      __pyx_v_go = 0;
+3829:                                             found = 1
                      __pyx_v_found = 1;
+3830:                                             break
                      goto __pyx_L45_break;
+3831:                             i = i + 1
              __pyx_v_i = (__pyx_v_i + 1);
+3832:                             if i == imax + 1:
              __pyx_t_23 = ((__pyx_v_i == (__pyx_v_imax + 1)) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
+3833:                                 go = 0
                __pyx_v_go = 0;
 3834: 
+3835:                         if found == 1:
            __pyx_t_23 = ((__pyx_v_found == 1) != 0);
            if (__pyx_t_23) {
/* … */
            }
 3836: 
 3837:                             # OUTWARD
+3838:                             for i in range(io, imax + 1):
              __pyx_t_80 = (__pyx_v_imax + 1);
              for (__pyx_t_79 = __pyx_v_io; __pyx_t_79 < __pyx_t_80; __pyx_t_79+=1) {
                __pyx_v_i = __pyx_t_79;
+3839:                                 for j in range(jo, jmax + 1):
                __pyx_t_97 = (__pyx_v_jmax + 1);
                for (__pyx_t_96 = __pyx_v_jo; __pyx_t_96 < __pyx_t_97; __pyx_t_96+=1) {
                  __pyx_v_j = __pyx_t_96;
+3840:                                     for dum in range(1):
                  for (__pyx_t_98 = 0; __pyx_t_98 < 1; __pyx_t_98+=1) {
                    __pyx_v_dum = __pyx_t_98;
+3841:                                         if II[i, j] == Io:
                    __pyx_t_99 = __pyx_v_i;
                    __pyx_t_100 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_100, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L62_break:;
                }
+3842:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3843:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_101 = (__pyx_v_i - 1);
                        __pyx_t_102 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3844:                                                     I[i, j] = Io
                          __pyx_t_103 = __pyx_v_i;
                          __pyx_t_104 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_104, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3845:                                                     Col[i, j, 2] = red
                          __pyx_t_105 = __pyx_v_i;
                          __pyx_t_106 = __pyx_v_j;
                          __pyx_t_107 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_107, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3846:                                                     Col[i, j, 1] = green
                          __pyx_t_108 = __pyx_v_i;
                          __pyx_t_109 = __pyx_v_j;
                          __pyx_t_110 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3847:                                                     Col[i, j, 0] = blue
                          __pyx_t_111 = __pyx_v_i;
                          __pyx_t_112 = __pyx_v_j;
                          __pyx_t_113 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_113, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3848:                                                     a[k] = 1
                          __pyx_t_114 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3849:                                                     break
                          goto __pyx_L62_break;
+3850:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3851:                                                 if I[i, j - 1] == Io:
                        __pyx_t_115 = __pyx_v_i;
                        __pyx_t_116 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3852:                                                     I[i, j] = Io
                          __pyx_t_117 = __pyx_v_i;
                          __pyx_t_118 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3853:                                                     Col[i, j, 2] = red
                          __pyx_t_119 = __pyx_v_i;
                          __pyx_t_120 = __pyx_v_j;
                          __pyx_t_121 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3854:                                                     Col[i, j, 1] = green
                          __pyx_t_122 = __pyx_v_i;
                          __pyx_t_123 = __pyx_v_j;
                          __pyx_t_124 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_124, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3855:                                                     Col[i, j, 0] = blue
                          __pyx_t_125 = __pyx_v_i;
                          __pyx_t_126 = __pyx_v_j;
                          __pyx_t_127 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_125, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3856:                                                     a[k] = 1
                          __pyx_t_128 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_128, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3857:                                                     break
                          goto __pyx_L62_break;
 3858: 
+3859:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3860:                                                 if I[i, j + 1] == Io:
                        __pyx_t_129 = __pyx_v_i;
                        __pyx_t_130 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3861:                                                     I[i, j] = Io
                          __pyx_t_131 = __pyx_v_i;
                          __pyx_t_132 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3862:                                                     Col[i, j, 2] = red
                          __pyx_t_133 = __pyx_v_i;
                          __pyx_t_134 = __pyx_v_j;
                          __pyx_t_135 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_135, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3863:                                                     Col[i, j, 1] = green
                          __pyx_t_136 = __pyx_v_i;
                          __pyx_t_137 = __pyx_v_j;
                          __pyx_t_138 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_136, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3864:                                                     Col[i, j, 0] = blue
                          __pyx_t_139 = __pyx_v_i;
                          __pyx_t_140 = __pyx_v_j;
                          __pyx_t_141 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3865:                                                     a[k] = 1
                          __pyx_t_142 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3866:                                                     break
                          goto __pyx_L62_break;
 3867: 
 3868: 
+3869:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3870:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_143 = (__pyx_v_i + 1);
                        __pyx_t_144 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3871:                                                     I[i, j] = Io
                          __pyx_t_145 = __pyx_v_i;
                          __pyx_t_146 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3872:                                                     Col[i, j, 2] = red
                          __pyx_t_147 = __pyx_v_i;
                          __pyx_t_148 = __pyx_v_j;
                          __pyx_t_149 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_148, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_149, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3873:                                                     Col[i, j, 1] = green
                          __pyx_t_150 = __pyx_v_i;
                          __pyx_t_151 = __pyx_v_j;
                          __pyx_t_152 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_151, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_152, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3874:                                                     Col[i, j, 0] = blue
                          __pyx_t_153 = __pyx_v_i;
                          __pyx_t_154 = __pyx_v_j;
                          __pyx_t_155 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_155, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3875:                                                     a[k] = 1
                          __pyx_t_156 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3876:                                                     break
                          goto __pyx_L62_break;
 3877: 
+3878:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_97 = (__pyx_v_jmin - 1);
                for (__pyx_t_96 = (__pyx_v_jo - 1); __pyx_t_96 > __pyx_t_97; __pyx_t_96-=1) {
                  __pyx_v_j = __pyx_t_96;
+3879:                                     for dum in range(1):
                  for (__pyx_t_98 = 0; __pyx_t_98 < 1; __pyx_t_98+=1) {
                    __pyx_v_dum = __pyx_t_98;
+3880:                                         if II[i, j] == Io:
                    __pyx_t_157 = __pyx_v_i;
                    __pyx_t_158 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L75_break:;
                }
              }
+3881:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3882:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_159 = (__pyx_v_i - 1);
                        __pyx_t_160 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3883:                                                     I[i, j] = Io
                          __pyx_t_161 = __pyx_v_i;
                          __pyx_t_162 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_161, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_162, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3884:                                                     Col[i, j, 2] = red
                          __pyx_t_163 = __pyx_v_i;
                          __pyx_t_164 = __pyx_v_j;
                          __pyx_t_165 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3885:                                                     Col[i, j, 1] = green
                          __pyx_t_166 = __pyx_v_i;
                          __pyx_t_167 = __pyx_v_j;
                          __pyx_t_168 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_168, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3886:                                                     Col[i, j, 0] = blue
                          __pyx_t_169 = __pyx_v_i;
                          __pyx_t_170 = __pyx_v_j;
                          __pyx_t_171 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_170, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_171, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3887:                                                     a[k] = 1
                          __pyx_t_172 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_172, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3888:                                                     break
                          goto __pyx_L75_break;
+3889:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3890:                                                 if I[i, j - 1] == Io:
                        __pyx_t_173 = __pyx_v_i;
                        __pyx_t_174 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_173, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_174, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3891:                                                     I[i, j] = Io
                          __pyx_t_175 = __pyx_v_i;
                          __pyx_t_176 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_176, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3892:                                                     Col[i, j, 2] = red
                          __pyx_t_177 = __pyx_v_i;
                          __pyx_t_178 = __pyx_v_j;
                          __pyx_t_179 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_178, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_179, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3893:                                                     Col[i, j, 1] = green
                          __pyx_t_180 = __pyx_v_i;
                          __pyx_t_181 = __pyx_v_j;
                          __pyx_t_182 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_180, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_181, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_182, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3894:                                                     Col[i, j, 0] = blue
                          __pyx_t_183 = __pyx_v_i;
                          __pyx_t_184 = __pyx_v_j;
                          __pyx_t_185 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_183, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3895:                                                     a[k] = 1
                          __pyx_t_186 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_186, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3896:                                                     break
                          goto __pyx_L75_break;
 3897: 
+3898:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3899:                                                 if I[i, j + 1] == Io:
                        __pyx_t_187 = __pyx_v_i;
                        __pyx_t_188 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_188, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3900:                                                     I[i, j] = Io
                          __pyx_t_189 = __pyx_v_i;
                          __pyx_t_190 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_189, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_190, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3901:                                                     Col[i, j, 2] = red
                          __pyx_t_191 = __pyx_v_i;
                          __pyx_t_192 = __pyx_v_j;
                          __pyx_t_193 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_191, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_192, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_193, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3902:                                                     Col[i, j, 1] = green
                          __pyx_t_194 = __pyx_v_i;
                          __pyx_t_195 = __pyx_v_j;
                          __pyx_t_196 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_194, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_195, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_196, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3903:                                                     Col[i, j, 0] = blue
                          __pyx_t_197 = __pyx_v_i;
                          __pyx_t_198 = __pyx_v_j;
                          __pyx_t_199 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_197, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_198, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_199, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3904:                                                     a[k] = 1
                          __pyx_t_200 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_200, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3905:                                                     break
                          goto __pyx_L75_break;
 3906: 
 3907: 
+3908:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3909:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_201 = (__pyx_v_i + 1);
                        __pyx_t_202 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_201, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_202, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3910:                                                     I[i, j] = Io
                          __pyx_t_203 = __pyx_v_i;
                          __pyx_t_204 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_203, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_204, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3911:                                                     Col[i, j, 2] = red
                          __pyx_t_205 = __pyx_v_i;
                          __pyx_t_206 = __pyx_v_j;
                          __pyx_t_207 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_205, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_206, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_207, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3912:                                                     Col[i, j, 1] = green
                          __pyx_t_208 = __pyx_v_i;
                          __pyx_t_209 = __pyx_v_j;
                          __pyx_t_210 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_208, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_209, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_210, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3913:                                                     Col[i, j, 0] = blue
                          __pyx_t_211 = __pyx_v_i;
                          __pyx_t_212 = __pyx_v_j;
                          __pyx_t_213 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_211, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_212, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_213, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3914:                                                     a[k] = 1
                          __pyx_t_214 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_214, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3915:                                                     break
                          goto __pyx_L75_break;
 3916: 
 3917: 
 3918: 
+3919:                             for i in range(io - 1, imin - 1, -1):
              __pyx_t_80 = (__pyx_v_imin - 1);
              for (__pyx_t_79 = (__pyx_v_io - 1); __pyx_t_79 > __pyx_t_80; __pyx_t_79-=1) {
                __pyx_v_i = __pyx_t_79;
+3920:                                 for j in range(jo, jmax + 1):
                __pyx_t_97 = (__pyx_v_jmax + 1);
                for (__pyx_t_96 = __pyx_v_jo; __pyx_t_96 < __pyx_t_97; __pyx_t_96+=1) {
                  __pyx_v_j = __pyx_t_96;
+3921:                                     for dum in range(1):
                  for (__pyx_t_98 = 0; __pyx_t_98 < 1; __pyx_t_98+=1) {
                    __pyx_v_dum = __pyx_t_98;
+3922:                                         if II[i, j] == Io:
                    __pyx_t_215 = __pyx_v_i;
                    __pyx_t_216 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_215, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_216, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L90_break:;
                }
+3923:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3924:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_217 = (__pyx_v_i - 1);
                        __pyx_t_218 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_217, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_218, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3925:                                                     I[i, j] = Io
                          __pyx_t_219 = __pyx_v_i;
                          __pyx_t_220 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_219, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_220, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3926:                                                     Col[i, j, 2] = red
                          __pyx_t_221 = __pyx_v_i;
                          __pyx_t_222 = __pyx_v_j;
                          __pyx_t_223 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_221, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_222, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_223, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3927:                                                     Col[i, j, 1] = green
                          __pyx_t_224 = __pyx_v_i;
                          __pyx_t_225 = __pyx_v_j;
                          __pyx_t_226 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_224, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_225, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_226, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3928:                                                     Col[i, j, 0] = blue
                          __pyx_t_227 = __pyx_v_i;
                          __pyx_t_228 = __pyx_v_j;
                          __pyx_t_229 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_227, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_228, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_229, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3929:                                                     a[k] = 1
                          __pyx_t_230 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_230, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3930:                                                     break
                          goto __pyx_L90_break;
+3931:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3932:                                                 if I[i, j - 1] == Io:
                        __pyx_t_231 = __pyx_v_i;
                        __pyx_t_232 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_231, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_232, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3933:                                                     I[i, j] = Io
                          __pyx_t_233 = __pyx_v_i;
                          __pyx_t_234 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_233, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_234, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3934:                                                     Col[i, j, 2] = red
                          __pyx_t_235 = __pyx_v_i;
                          __pyx_t_236 = __pyx_v_j;
                          __pyx_t_237 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_235, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_236, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_237, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3935:                                                     Col[i, j, 1] = green
                          __pyx_t_238 = __pyx_v_i;
                          __pyx_t_239 = __pyx_v_j;
                          __pyx_t_240 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_238, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_239, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_240, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3936:                                                     Col[i, j, 0] = blue
                          __pyx_t_241 = __pyx_v_i;
                          __pyx_t_242 = __pyx_v_j;
                          __pyx_t_243 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_241, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_242, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_243, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3937:                                                     a[k] = 1
                          __pyx_t_244 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_244, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3938:                                                     break
                          goto __pyx_L90_break;
 3939: 
+3940:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3941:                                                 if I[i, j + 1] == Io:
                        __pyx_t_245 = __pyx_v_i;
                        __pyx_t_246 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_245, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_246, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3942:                                                     I[i, j] = Io
                          __pyx_t_247 = __pyx_v_i;
                          __pyx_t_248 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_247, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_248, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3943:                                                     Col[i, j, 2] = red
                          __pyx_t_249 = __pyx_v_i;
                          __pyx_t_250 = __pyx_v_j;
                          __pyx_t_251 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_249, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_250, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_251, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3944:                                                     Col[i, j, 1] = green
                          __pyx_t_252 = __pyx_v_i;
                          __pyx_t_253 = __pyx_v_j;
                          __pyx_t_254 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_252, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_253, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_254, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3945:                                                     Col[i, j, 0] = blue
                          __pyx_t_255 = __pyx_v_i;
                          __pyx_t_256 = __pyx_v_j;
                          __pyx_t_257 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_255, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_256, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_257, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3946:                                                     a[k] = 1
                          __pyx_t_258 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_258, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3947:                                                     break
                          goto __pyx_L90_break;
 3948: 
 3949: 
+3950:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3951:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_259 = (__pyx_v_i + 1);
                        __pyx_t_260 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_259, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_260, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3952:                                                     I[i, j] = Io
                          __pyx_t_261 = __pyx_v_i;
                          __pyx_t_262 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_261, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_262, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3953:                                                     Col[i, j, 2] = red
                          __pyx_t_263 = __pyx_v_i;
                          __pyx_t_264 = __pyx_v_j;
                          __pyx_t_265 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_263, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_264, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_265, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3954:                                                     Col[i, j, 1] = green
                          __pyx_t_266 = __pyx_v_i;
                          __pyx_t_267 = __pyx_v_j;
                          __pyx_t_268 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_266, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_267, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_268, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3955:                                                     Col[i, j, 0] = blue
                          __pyx_t_269 = __pyx_v_i;
                          __pyx_t_270 = __pyx_v_j;
                          __pyx_t_271 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_269, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_270, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_271, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3956:                                                     a[k] = 1
                          __pyx_t_272 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_272, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3957:                                                     break
                          goto __pyx_L90_break;
 3958: 
+3959:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_97 = (__pyx_v_jmin - 1);
                for (__pyx_t_96 = (__pyx_v_jo - 1); __pyx_t_96 > __pyx_t_97; __pyx_t_96-=1) {
                  __pyx_v_j = __pyx_t_96;
+3960:                                     for dum in range(1):
                  for (__pyx_t_98 = 0; __pyx_t_98 < 1; __pyx_t_98+=1) {
                    __pyx_v_dum = __pyx_t_98;
+3961:                                         if II[i, j] == Io:
                    __pyx_t_273 = __pyx_v_i;
                    __pyx_t_274 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_273, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_274, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L103_break:;
                }
              }
+3962:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3963:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_275 = (__pyx_v_i - 1);
                        __pyx_t_276 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_275, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_276, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3964:                                                     I[i, j] = Io
                          __pyx_t_277 = __pyx_v_i;
                          __pyx_t_278 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_277, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_278, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3965:                                                     Col[i, j, 2] = red
                          __pyx_t_279 = __pyx_v_i;
                          __pyx_t_280 = __pyx_v_j;
                          __pyx_t_281 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_279, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_280, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_281, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3966:                                                     Col[i, j, 1] = green
                          __pyx_t_282 = __pyx_v_i;
                          __pyx_t_283 = __pyx_v_j;
                          __pyx_t_284 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_282, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_283, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_284, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3967:                                                     Col[i, j, 0] = blue
                          __pyx_t_285 = __pyx_v_i;
                          __pyx_t_286 = __pyx_v_j;
                          __pyx_t_287 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_285, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_286, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_287, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3968:                                                     a[k] = 1
                          __pyx_t_288 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_288, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3969:                                                     break
                          goto __pyx_L103_break;
+3970:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3971:                                                 if I[i, j - 1] == Io:
                        __pyx_t_289 = __pyx_v_i;
                        __pyx_t_290 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_289, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_290, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3972:                                                     I[i, j] = Io
                          __pyx_t_291 = __pyx_v_i;
                          __pyx_t_292 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_291, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_292, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3973:                                                     Col[i, j, 2] = red
                          __pyx_t_293 = __pyx_v_i;
                          __pyx_t_294 = __pyx_v_j;
                          __pyx_t_295 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_293, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_294, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_295, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3974:                                                     Col[i, j, 1] = green
                          __pyx_t_296 = __pyx_v_i;
                          __pyx_t_297 = __pyx_v_j;
                          __pyx_t_298 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_296, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_297, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_298, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3975:                                                     Col[i, j, 0] = blue
                          __pyx_t_299 = __pyx_v_i;
                          __pyx_t_300 = __pyx_v_j;
                          __pyx_t_301 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_299, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_300, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_301, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3976:                                                     a[k] = 1
                          __pyx_t_302 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_302, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3977:                                                     break
                          goto __pyx_L103_break;
 3978: 
+3979:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3980:                                                 if I[i, j + 1] == Io:
                        __pyx_t_303 = __pyx_v_i;
                        __pyx_t_304 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_303, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_304, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3981:                                                     I[i, j] = Io
                          __pyx_t_305 = __pyx_v_i;
                          __pyx_t_306 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_305, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_306, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3982:                                                     Col[i, j, 2] = red
                          __pyx_t_307 = __pyx_v_i;
                          __pyx_t_308 = __pyx_v_j;
                          __pyx_t_309 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_307, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_308, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_309, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3983:                                                     Col[i, j, 1] = green
                          __pyx_t_310 = __pyx_v_i;
                          __pyx_t_311 = __pyx_v_j;
                          __pyx_t_312 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_310, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_311, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_312, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3984:                                                     Col[i, j, 0] = blue
                          __pyx_t_313 = __pyx_v_i;
                          __pyx_t_314 = __pyx_v_j;
                          __pyx_t_315 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_313, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_314, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_315, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3985:                                                     a[k] = 1
                          __pyx_t_316 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_316, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3986:                                                     break
                          goto __pyx_L103_break;
 3987: 
 3988: 
+3989:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+3990:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_317 = (__pyx_v_i + 1);
                        __pyx_t_318 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_317, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_318, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+3991:                                                     I[i, j] = Io
                          __pyx_t_319 = __pyx_v_i;
                          __pyx_t_320 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_319, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_320, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+3992:                                                     Col[i, j, 2] = red
                          __pyx_t_321 = __pyx_v_i;
                          __pyx_t_322 = __pyx_v_j;
                          __pyx_t_323 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_321, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_322, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_323, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+3993:                                                     Col[i, j, 1] = green
                          __pyx_t_324 = __pyx_v_i;
                          __pyx_t_325 = __pyx_v_j;
                          __pyx_t_326 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_324, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_325, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_326, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+3994:                                                     Col[i, j, 0] = blue
                          __pyx_t_327 = __pyx_v_i;
                          __pyx_t_328 = __pyx_v_j;
                          __pyx_t_329 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_327, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_328, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_329, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+3995:                                                     a[k] = 1
                          __pyx_t_330 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_330, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+3996:                                                     break
                          goto __pyx_L103_break;
 3997: 
 3998: 
 3999: 
 4000:                             # INWARD
+4001:                             for i in range(imax, io - 1, -1):
              __pyx_t_80 = (__pyx_v_io - 1);
              for (__pyx_t_79 = __pyx_v_imax; __pyx_t_79 > __pyx_t_80; __pyx_t_79-=1) {
                __pyx_v_i = __pyx_t_79;
+4002:                                 for j in range(jo, jmax + 1):
                __pyx_t_97 = (__pyx_v_jmax + 1);
                for (__pyx_t_96 = __pyx_v_jo; __pyx_t_96 < __pyx_t_97; __pyx_t_96+=1) {
                  __pyx_v_j = __pyx_t_96;
+4003:                                     for dum in range(1):
                  for (__pyx_t_98 = 0; __pyx_t_98 < 1; __pyx_t_98+=1) {
                    __pyx_v_dum = __pyx_t_98;
+4004:                                         if II[i, j] == Io:
                    __pyx_t_331 = __pyx_v_i;
                    __pyx_t_332 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_331, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_332, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L118_break:;
                }
+4005:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4006:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_333 = (__pyx_v_i - 1);
                        __pyx_t_334 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_333, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_334, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4007:                                                     I[i, j] = Io
                          __pyx_t_335 = __pyx_v_i;
                          __pyx_t_336 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_335, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_336, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4008:                                                     Col[i, j, 2] = red
                          __pyx_t_337 = __pyx_v_i;
                          __pyx_t_338 = __pyx_v_j;
                          __pyx_t_339 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_337, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_338, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_339, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4009:                                                     Col[i, j, 1] = green
                          __pyx_t_340 = __pyx_v_i;
                          __pyx_t_341 = __pyx_v_j;
                          __pyx_t_342 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_340, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_341, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_342, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4010:                                                     Col[i, j, 0] = blue
                          __pyx_t_343 = __pyx_v_i;
                          __pyx_t_344 = __pyx_v_j;
                          __pyx_t_345 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_343, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_344, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_345, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4011:                                                     a[k] = 1
                          __pyx_t_346 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_346, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4012:                                                     break
                          goto __pyx_L118_break;
+4013:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4014:                                                 if I[i, j - 1] == Io:
                        __pyx_t_347 = __pyx_v_i;
                        __pyx_t_348 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_347, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_348, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4015:                                                     I[i, j] = Io
                          __pyx_t_349 = __pyx_v_i;
                          __pyx_t_350 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_349, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_350, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4016:                                                     Col[i, j, 2] = red
                          __pyx_t_351 = __pyx_v_i;
                          __pyx_t_352 = __pyx_v_j;
                          __pyx_t_353 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_351, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_352, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_353, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4017:                                                     Col[i, j, 1] = green
                          __pyx_t_354 = __pyx_v_i;
                          __pyx_t_355 = __pyx_v_j;
                          __pyx_t_356 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_354, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_355, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_356, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4018:                                                     Col[i, j, 0] = blue
                          __pyx_t_357 = __pyx_v_i;
                          __pyx_t_358 = __pyx_v_j;
                          __pyx_t_359 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_357, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_358, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_359, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4019:                                                     a[k] = 1
                          __pyx_t_360 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_360, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4020:                                                     break
                          goto __pyx_L118_break;
 4021: 
+4022:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4023:                                                 if I[i, j + 1] == Io:
                        __pyx_t_361 = __pyx_v_i;
                        __pyx_t_362 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_361, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_362, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4024:                                                     I[i, j] = Io
                          __pyx_t_363 = __pyx_v_i;
                          __pyx_t_364 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_363, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_364, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4025:                                                     Col[i, j, 2] = red
                          __pyx_t_365 = __pyx_v_i;
                          __pyx_t_366 = __pyx_v_j;
                          __pyx_t_367 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_365, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_366, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_367, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4026:                                                     Col[i, j, 1] = green
                          __pyx_t_368 = __pyx_v_i;
                          __pyx_t_369 = __pyx_v_j;
                          __pyx_t_370 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_368, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_369, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_370, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4027:                                                     Col[i, j, 0] = blue
                          __pyx_t_371 = __pyx_v_i;
                          __pyx_t_372 = __pyx_v_j;
                          __pyx_t_373 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_371, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_372, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_373, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4028:                                                     a[k] = 1
                          __pyx_t_374 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_374, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4029:                                                     break
                          goto __pyx_L118_break;
 4030: 
 4031: 
+4032:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4033:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_375 = (__pyx_v_i + 1);
                        __pyx_t_376 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_375, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_376, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4034:                                                     I[i, j] = Io
                          __pyx_t_377 = __pyx_v_i;
                          __pyx_t_378 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_377, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_378, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4035:                                                     Col[i, j, 2] = red
                          __pyx_t_379 = __pyx_v_i;
                          __pyx_t_380 = __pyx_v_j;
                          __pyx_t_381 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_379, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_380, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_381, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4036:                                                     Col[i, j, 1] = green
                          __pyx_t_382 = __pyx_v_i;
                          __pyx_t_383 = __pyx_v_j;
                          __pyx_t_384 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_382, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_383, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_384, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4037:                                                     Col[i, j, 0] = blue
                          __pyx_t_385 = __pyx_v_i;
                          __pyx_t_386 = __pyx_v_j;
                          __pyx_t_387 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_385, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_386, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_387, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4038:                                                     a[k] = 1
                          __pyx_t_388 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_388, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4039:                                                     break
                          goto __pyx_L118_break;
 4040: 
+4041:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_97 = (__pyx_v_jmin - 1);
                for (__pyx_t_96 = (__pyx_v_jo - 1); __pyx_t_96 > __pyx_t_97; __pyx_t_96-=1) {
                  __pyx_v_j = __pyx_t_96;
+4042:                                     for dum in range(1):
                  for (__pyx_t_98 = 0; __pyx_t_98 < 1; __pyx_t_98+=1) {
                    __pyx_v_dum = __pyx_t_98;
+4043:                                         if II[i, j] == Io:
                    __pyx_t_389 = __pyx_v_i;
                    __pyx_t_390 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_389, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_390, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L131_break:;
                }
              }
+4044:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4045:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_391 = (__pyx_v_i - 1);
                        __pyx_t_392 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_391, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_392, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4046:                                                     I[i, j] = Io
                          __pyx_t_393 = __pyx_v_i;
                          __pyx_t_394 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_393, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_394, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4047:                                                     Col[i, j, 2] = red
                          __pyx_t_395 = __pyx_v_i;
                          __pyx_t_396 = __pyx_v_j;
                          __pyx_t_397 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_395, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_396, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_397, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4048:                                                     Col[i, j, 1] = green
                          __pyx_t_398 = __pyx_v_i;
                          __pyx_t_399 = __pyx_v_j;
                          __pyx_t_400 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_398, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_399, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_400, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4049:                                                     Col[i, j, 0] = blue
                          __pyx_t_401 = __pyx_v_i;
                          __pyx_t_402 = __pyx_v_j;
                          __pyx_t_403 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_401, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_402, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_403, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4050:                                                     a[k] = 1
                          __pyx_t_404 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_404, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4051:                                                     break
                          goto __pyx_L131_break;
+4052:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4053:                                                 if I[i, j - 1] == Io:
                        __pyx_t_405 = __pyx_v_i;
                        __pyx_t_406 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_405, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_406, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4054:                                                     I[i, j] = Io
                          __pyx_t_407 = __pyx_v_i;
                          __pyx_t_408 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_407, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_408, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4055:                                                     Col[i, j, 2] = red
                          __pyx_t_409 = __pyx_v_i;
                          __pyx_t_410 = __pyx_v_j;
                          __pyx_t_411 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_409, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_410, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_411, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4056:                                                     Col[i, j, 1] = green
                          __pyx_t_412 = __pyx_v_i;
                          __pyx_t_413 = __pyx_v_j;
                          __pyx_t_414 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_412, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_413, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_414, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4057:                                                     Col[i, j, 0] = blue
                          __pyx_t_415 = __pyx_v_i;
                          __pyx_t_416 = __pyx_v_j;
                          __pyx_t_417 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_415, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_416, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_417, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4058:                                                     a[k] = 1
                          __pyx_t_418 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_418, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4059:                                                     break
                          goto __pyx_L131_break;
 4060: 
+4061:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4062:                                                 if I[i, j + 1] == Io:
                        __pyx_t_419 = __pyx_v_i;
                        __pyx_t_420 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_419, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_420, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4063:                                                     I[i, j] = Io
                          __pyx_t_421 = __pyx_v_i;
                          __pyx_t_422 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_421, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_422, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4064:                                                     Col[i, j, 2] = red
                          __pyx_t_423 = __pyx_v_i;
                          __pyx_t_424 = __pyx_v_j;
                          __pyx_t_425 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_423, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_424, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_425, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4065:                                                     Col[i, j, 1] = green
                          __pyx_t_426 = __pyx_v_i;
                          __pyx_t_427 = __pyx_v_j;
                          __pyx_t_428 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_426, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_427, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_428, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4066:                                                     Col[i, j, 0] = blue
                          __pyx_t_429 = __pyx_v_i;
                          __pyx_t_430 = __pyx_v_j;
                          __pyx_t_431 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_429, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_430, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_431, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4067:                                                     a[k] = 1
                          __pyx_t_432 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_432, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4068:                                                     break
                          goto __pyx_L131_break;
 4069: 
 4070: 
+4071:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4072:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_433 = (__pyx_v_i + 1);
                        __pyx_t_434 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_433, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_434, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4073:                                                     I[i, j] = Io
                          __pyx_t_435 = __pyx_v_i;
                          __pyx_t_436 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_435, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_436, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4074:                                                     Col[i, j, 2] = red
                          __pyx_t_437 = __pyx_v_i;
                          __pyx_t_438 = __pyx_v_j;
                          __pyx_t_439 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_437, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_438, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_439, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4075:                                                     Col[i, j, 1] = green
                          __pyx_t_440 = __pyx_v_i;
                          __pyx_t_441 = __pyx_v_j;
                          __pyx_t_442 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_440, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_441, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_442, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4076:                                                     Col[i, j, 0] = blue
                          __pyx_t_443 = __pyx_v_i;
                          __pyx_t_444 = __pyx_v_j;
                          __pyx_t_445 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_443, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_444, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_445, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4077:                                                     a[k] = 1
                          __pyx_t_446 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_446, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4078:                                                     break
                          goto __pyx_L131_break;
 4079: 
 4080: 
 4081: 
+4082:                             for i in range(imin, io, -1):
              __pyx_t_80 = __pyx_v_io;
              for (__pyx_t_79 = __pyx_v_imin; __pyx_t_79 > __pyx_t_80; __pyx_t_79-=1) {
                __pyx_v_i = __pyx_t_79;
+4083:                                 for j in range(jo, jmax + 1):
                __pyx_t_97 = (__pyx_v_jmax + 1);
                for (__pyx_t_96 = __pyx_v_jo; __pyx_t_96 < __pyx_t_97; __pyx_t_96+=1) {
                  __pyx_v_j = __pyx_t_96;
+4084:                                     for dum in range(1):
                  for (__pyx_t_98 = 0; __pyx_t_98 < 1; __pyx_t_98+=1) {
                    __pyx_v_dum = __pyx_t_98;
+4085:                                         if II[i, j] == Io:
                    __pyx_t_447 = __pyx_v_i;
                    __pyx_t_448 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_447, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_448, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L146_break:;
                }
+4086:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4087:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_449 = (__pyx_v_i - 1);
                        __pyx_t_450 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_449, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_450, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4088:                                                     I[i, j] = Io
                          __pyx_t_451 = __pyx_v_i;
                          __pyx_t_452 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_451, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_452, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4089:                                                     Col[i, j, 2] = red
                          __pyx_t_453 = __pyx_v_i;
                          __pyx_t_454 = __pyx_v_j;
                          __pyx_t_455 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_453, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_454, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_455, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4090:                                                     Col[i, j, 1] = green
                          __pyx_t_456 = __pyx_v_i;
                          __pyx_t_457 = __pyx_v_j;
                          __pyx_t_458 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_456, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_457, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_458, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4091:                                                     Col[i, j, 0] = blue
                          __pyx_t_459 = __pyx_v_i;
                          __pyx_t_460 = __pyx_v_j;
                          __pyx_t_461 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_459, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_460, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_461, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4092:                                                     a[k] = 1
                          __pyx_t_462 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_462, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4093:                                                     break
                          goto __pyx_L146_break;
+4094:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4095:                                                 if I[i, j - 1] == Io:
                        __pyx_t_463 = __pyx_v_i;
                        __pyx_t_464 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_463, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_464, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4096:                                                     I[i, j] = Io
                          __pyx_t_465 = __pyx_v_i;
                          __pyx_t_466 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_465, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_466, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4097:                                                     Col[i, j, 2] = red
                          __pyx_t_467 = __pyx_v_i;
                          __pyx_t_468 = __pyx_v_j;
                          __pyx_t_469 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_467, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_468, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_469, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4098:                                                     Col[i, j, 1] = green
                          __pyx_t_470 = __pyx_v_i;
                          __pyx_t_471 = __pyx_v_j;
                          __pyx_t_472 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_470, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_471, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_472, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4099:                                                     Col[i, j, 0] = blue
                          __pyx_t_473 = __pyx_v_i;
                          __pyx_t_474 = __pyx_v_j;
                          __pyx_t_475 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_473, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_474, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_475, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4100:                                                     a[k] = 1
                          __pyx_t_476 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_476, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4101:                                                     break
                          goto __pyx_L146_break;
 4102: 
+4103:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4104:                                                 if I[i, j + 1] == Io:
                        __pyx_t_477 = __pyx_v_i;
                        __pyx_t_478 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_477, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_478, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4105:                                                     I[i, j] = Io
                          __pyx_t_479 = __pyx_v_i;
                          __pyx_t_480 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_479, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_480, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4106:                                                     Col[i, j, 2] = red
                          __pyx_t_481 = __pyx_v_i;
                          __pyx_t_482 = __pyx_v_j;
                          __pyx_t_483 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_481, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_482, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_483, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4107:                                                     Col[i, j, 1] = green
                          __pyx_t_484 = __pyx_v_i;
                          __pyx_t_485 = __pyx_v_j;
                          __pyx_t_486 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_484, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_485, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_486, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4108:                                                     Col[i, j, 0] = blue
                          __pyx_t_487 = __pyx_v_i;
                          __pyx_t_488 = __pyx_v_j;
                          __pyx_t_489 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_487, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_488, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_489, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4109:                                                     a[k] = 1
                          __pyx_t_490 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_490, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4110:                                                     break
                          goto __pyx_L146_break;
 4111: 
 4112: 
+4113:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4114:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_491 = (__pyx_v_i + 1);
                        __pyx_t_492 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_491, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_492, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4115:                                                     I[i, j] = Io
                          __pyx_t_493 = __pyx_v_i;
                          __pyx_t_494 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_493, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_494, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4116:                                                     a[k] = 1
                          __pyx_t_495 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_495, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4117:                                                     break
                          goto __pyx_L146_break;
 4118: 
+4119:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_97 = (__pyx_v_jmin - 1);
                for (__pyx_t_96 = (__pyx_v_jo - 1); __pyx_t_96 > __pyx_t_97; __pyx_t_96-=1) {
                  __pyx_v_j = __pyx_t_96;
+4120:                                     for dum in range(1):
                  for (__pyx_t_98 = 0; __pyx_t_98 < 1; __pyx_t_98+=1) {
                    __pyx_v_dum = __pyx_t_98;
+4121:                                         if II[i, j] == Io:
                    __pyx_t_496 = __pyx_v_i;
                    __pyx_t_497 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_496, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_497, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L159_break:;
                }
              }
+4122:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4123:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_498 = (__pyx_v_i - 1);
                        __pyx_t_499 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_498, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_499, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4124:                                                     I[i, j] = Io
                          __pyx_t_500 = __pyx_v_i;
                          __pyx_t_501 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_500, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_501, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4125:                                                     Col[i, j, 2] = red
                          __pyx_t_502 = __pyx_v_i;
                          __pyx_t_503 = __pyx_v_j;
                          __pyx_t_504 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_502, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_503, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_504, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4126:                                                     Col[i, j, 1] = green
                          __pyx_t_505 = __pyx_v_i;
                          __pyx_t_506 = __pyx_v_j;
                          __pyx_t_507 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_505, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_506, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_507, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4127:                                                     Col[i, j, 0] = blue
                          __pyx_t_508 = __pyx_v_i;
                          __pyx_t_509 = __pyx_v_j;
                          __pyx_t_510 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_508, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_509, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_510, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4128:                                                     a[k] = 1
                          __pyx_t_511 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_511, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4129:                                                     break
                          goto __pyx_L159_break;
+4130:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4131:                                                 if I[i, j - 1] == Io:
                        __pyx_t_512 = __pyx_v_i;
                        __pyx_t_513 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_512, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_513, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4132:                                                     I[i, j] = Io
                          __pyx_t_514 = __pyx_v_i;
                          __pyx_t_515 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_514, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_515, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4133:                                                     Col[i, j, 2] = red
                          __pyx_t_516 = __pyx_v_i;
                          __pyx_t_517 = __pyx_v_j;
                          __pyx_t_518 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_516, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_517, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_518, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4134:                                                     Col[i, j, 1] = green
                          __pyx_t_519 = __pyx_v_i;
                          __pyx_t_520 = __pyx_v_j;
                          __pyx_t_521 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_519, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_520, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_521, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4135:                                                     Col[i, j, 0] = blue
                          __pyx_t_522 = __pyx_v_i;
                          __pyx_t_523 = __pyx_v_j;
                          __pyx_t_524 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_522, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_523, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_524, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4136:                                                     a[k] = 1
                          __pyx_t_525 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_525, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4137:                                                     break
                          goto __pyx_L159_break;
 4138: 
+4139:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4140:                                                 if I[i, j + 1] == Io:
                        __pyx_t_526 = __pyx_v_i;
                        __pyx_t_527 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_526, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_527, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4141:                                                     I[i, j] = Io
                          __pyx_t_528 = __pyx_v_i;
                          __pyx_t_529 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_528, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_529, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4142:                                                     Col[i, j, 2] = red
                          __pyx_t_530 = __pyx_v_i;
                          __pyx_t_531 = __pyx_v_j;
                          __pyx_t_532 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_530, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_531, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_532, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4143:                                                     Col[i, j, 1] = green
                          __pyx_t_533 = __pyx_v_i;
                          __pyx_t_534 = __pyx_v_j;
                          __pyx_t_535 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_533, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_534, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_535, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4144:                                                     Col[i, j, 0] = blue
                          __pyx_t_536 = __pyx_v_i;
                          __pyx_t_537 = __pyx_v_j;
                          __pyx_t_538 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_536, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_537, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_538, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4145:                                                     a[k] = 1
                          __pyx_t_539 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_539, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4146:                                                     break
                          goto __pyx_L159_break;
 4147: 
 4148: 
+4149:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4150:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_540 = (__pyx_v_i + 1);
                        __pyx_t_541 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_540, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_541, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4151:                                                     I[i, j] = Io
                          __pyx_t_542 = __pyx_v_i;
                          __pyx_t_543 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_542, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_543, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4152:                                                     Col[i, j, 2] = red
                          __pyx_t_544 = __pyx_v_i;
                          __pyx_t_545 = __pyx_v_j;
                          __pyx_t_546 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_544, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_545, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_546, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4153:                                                     Col[i, j, 1] = green
                          __pyx_t_547 = __pyx_v_i;
                          __pyx_t_548 = __pyx_v_j;
                          __pyx_t_549 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_547, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_548, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_549, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4154:                                                     Col[i, j, 0] = blue
                          __pyx_t_550 = __pyx_v_i;
                          __pyx_t_551 = __pyx_v_j;
                          __pyx_t_552 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_550, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_551, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_552, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4155:                                                     a[k] = 1
                          __pyx_t_553 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_553, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4156:                                                     break
                          goto __pyx_L159_break;
 4157: 
+4158:                     if a[k] == 0:
          __pyx_t_80 = __pyx_v_k;
          __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_23) {
/* … */
          }
+4159:                         xmin = max(0, xo - MAJceil)
            __pyx_t_79 = (__pyx_v_xo - __pyx_v_MAJceil);
            __pyx_t_554 = 0;
            if (((__pyx_t_79 > __pyx_t_554) != 0)) {
              __pyx_t_97 = __pyx_t_79;
            } else {
              __pyx_t_97 = __pyx_t_554;
            }
            __pyx_v_xmin = __pyx_t_97;
+4160:                         xmax = min(m - 1, xo + MAJceil)
            __pyx_t_97 = (__pyx_v_xo + __pyx_v_MAJceil);
            __pyx_t_79 = (__pyx_v_m - 1);
            if (((__pyx_t_97 < __pyx_t_79) != 0)) {
              __pyx_t_96 = __pyx_t_97;
            } else {
              __pyx_t_96 = __pyx_t_79;
            }
            __pyx_v_xmax = __pyx_t_96;
+4161:                         ymin = max(0, yo - MINceil)
            __pyx_t_96 = (__pyx_v_yo - __pyx_v_MINceil);
            __pyx_t_554 = 0;
            if (((__pyx_t_96 > __pyx_t_554) != 0)) {
              __pyx_t_97 = __pyx_t_96;
            } else {
              __pyx_t_97 = __pyx_t_554;
            }
            __pyx_v_ymin = __pyx_t_97;
+4162:                         ymax = min(n - 1, yo + MINceil)
            __pyx_t_97 = (__pyx_v_yo + __pyx_v_MINceil);
            __pyx_t_96 = (__pyx_v_n - 1);
            if (((__pyx_t_97 < __pyx_t_96) != 0)) {
              __pyx_t_79 = __pyx_t_97;
            } else {
              __pyx_t_79 = __pyx_t_96;
            }
            __pyx_v_ymax = __pyx_t_79;
+4163:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_79 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_79, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 4164: 
+4165:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+4166:             countim = countim + 1
      __pyx_v_countim = (__pyx_v_countim + 1);
    }
+4167:         if asy == 0:
    __pyx_t_23 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_23) {
/* … */
    }
+4168:             break
      goto __pyx_L12_break;
 4169:         else:
+4170:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_27 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_27); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4170, __pyx_L1_error)
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_all); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      __pyx_t_27 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_27)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_27);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (__pyx_t_27) {
        __pyx_t_25 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4170, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      } else {
        __pyx_t_25 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4170, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyInt_EqObjC(__pyx_t_25, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 4170, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_23) {
/* … */
      }
+4171:                 break
        goto __pyx_L12_break;
 4172:             else:
+4173:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4173, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+4174:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_27);
        __pyx_t_7 = 0;
        __pyx_t_27 = 0;
        __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_27, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4174, __pyx_L1_error)
        __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4174, __pyx_L1_error)
        }
        __pyx_t_9 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_8));
        __pyx_t_8 = 0;
+4175:                 II = np.zeros((m, n), dtype=np.int)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_25 = PyTuple_New(2); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_25, 1, __pyx_t_27);
        __pyx_t_8 = 0;
        __pyx_t_27 = 0;
        __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_25);
        __pyx_t_25 = 0;
        __pyx_t_25 = PyDict_New(); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (PyDict_SetItem(__pyx_t_25, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_27, __pyx_t_25); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4175, __pyx_L1_error)
        __pyx_t_15 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_II.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_II.rcbuffer->pybuffer, (PyObject*)__pyx_v_II, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_II.diminfo[0].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_II.diminfo[0].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_II.diminfo[1].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_II.diminfo[1].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4175, __pyx_L1_error)
        }
        __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_II, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
+4176:                 MAJ = np.zeros(p, dtype=np.float64)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 4176, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_27, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4176, __pyx_L1_error)
        __pyx_t_16 = ((PyArrayObject *)__pyx_t_8);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_v_MAJ, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4176, __pyx_L1_error)
        }
        __pyx_t_16 = 0;
        __Pyx_DECREF_SET(__pyx_v_MAJ, ((PyArrayObject *)__pyx_t_8));
        __pyx_t_8 = 0;
+4177:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4177, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4177, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4177, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4177, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4177, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4177, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4177, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 4177, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_27, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4177, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4177, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4177, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_1));
        __pyx_t_1 = 0;
+4178:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4178, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_centroids); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4178, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4178, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4178, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4178, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_27);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_27, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_6 = PyTuple_New(4+__pyx_t_26); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4178, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_26, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_26, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_26, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_26, __pyx_t_25);
        __pyx_t_8 = 0;
        __pyx_t_7 = 0;
        __pyx_t_25 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4178, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
          PyObject* sequence = __pyx_t_1;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 4178, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_27 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_27 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_27);
          __Pyx_INCREF(__pyx_t_6);
          #else
          __pyx_t_27 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4178, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4178, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_25 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4178, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_24 = Py_TYPE(__pyx_t_25)->tp_iternext;
          index = 0; __pyx_t_27 = __pyx_t_24(__pyx_t_25); if (unlikely(!__pyx_t_27)) goto __pyx_L172_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_27);
          index = 1; __pyx_t_6 = __pyx_t_24(__pyx_t_25); if (unlikely(!__pyx_t_6)) goto __pyx_L172_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_6);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_25), 2) < 0) __PYX_ERR(0, 4178, __pyx_L1_error)
          __pyx_t_24 = NULL;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          goto __pyx_L173_unpacking_done;
          __pyx_L172_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_24 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 4178, __pyx_L1_error)
          __pyx_L173_unpacking_done:;
        }
        if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4178, __pyx_L1_error)
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4178, __pyx_L1_error)
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_27);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4178, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_27));
        __pyx_t_27 = 0;
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_6);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4178, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;
+4179:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
+4180:     toc = time.time()
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_27);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_27, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4180, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_27); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4180, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 4180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_toc = __pyx_t_22;
+4181:     obj.exetime = toc - tic
  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_1) < 0) __PYX_ERR(0, 4181, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4182:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 4182, __pyx_L1_error)
+4183:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 4183, __pyx_L1_error)
+4184:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 4184, __pyx_L1_error)
+4185:     obj.adotVal = adotVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_adotVal, ((PyObject *)__pyx_v_adotVal)) < 0) __PYX_ERR(0, 4185, __pyx_L1_error)
+4186:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 4186, __pyx_L1_error)
+4187:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 4188: 
 4189: 
+4190: def Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_37Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_37Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot = {"Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot", (PyCFunction)__pyx_pw_9libEVOLVE_37Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_37Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_36Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_36Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PY_LONG_LONG __pyx_v_seq;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Thetafunc = NULL;
  PyObject *__pyx_v_Rfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_delX;
  PY_LONG_LONG __pyx_v_delY;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_MIN;
  float __pyx_v_theta;
  float __pyx_v_c;
  float __pyx_v_s;
  float __pyx_v_MAJ;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  CYTHON_UNUSED PyArrayObject *__pyx_v_II = 0;
  PyArrayObject *__pyx_v_a = 0;
  CYTHON_UNUSED PyArrayObject *__pyx_v_adotVal = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Theta = 0;
  PyArrayObject *__pyx_v_Rval = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_II;
  __Pyx_Buffer __pyx_pybuffer_II;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Rval;
  __Pyx_Buffer __pyx_pybuffer_Rval;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Theta;
  __Pyx_Buffer __pyx_pybuffer_Theta;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_adotVal;
  __Pyx_Buffer __pyx_pybuffer_adotVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_II.pybuffer.buf = NULL;
  __pyx_pybuffer_II.refcount = 0;
  __pyx_pybuffernd_II.data = NULL;
  __pyx_pybuffernd_II.rcbuffer = &__pyx_pybuffer_II;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_adotVal.pybuffer.buf = NULL;
  __pyx_pybuffer_adotVal.refcount = 0;
  __pyx_pybuffernd_adotVal.data = NULL;
  __pyx_pybuffernd_adotVal.rcbuffer = &__pyx_pybuffer_adotVal;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Theta.pybuffer.buf = NULL;
  __pyx_pybuffer_Theta.refcount = 0;
  __pyx_pybuffernd_Theta.data = NULL;
  __pyx_pybuffernd_Theta.rcbuffer = &__pyx_pybuffer_Theta;
  __pyx_pybuffer_Rval.pybuffer.buf = NULL;
  __pyx_pybuffer_Rval.refcount = 0;
  __pyx_pybuffernd_Rval.data = NULL;
  __pyx_pybuffernd_Rval.rcbuffer = &__pyx_pybuffer_Rval;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_27);
  __Pyx_XDECREF(__pyx_t_61);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Thetafunc);
  __Pyx_XDECREF(__pyx_v_Rfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_II);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_adotVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Theta);
  __Pyx_XDECREF((PyObject *)__pyx_v_Rval);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__47 = PyTuple_Pack(60, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_seq, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Thetafunc, __pyx_n_s_Rfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_MN, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_dum, __pyx_n_s_countim, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_delX, __pyx_n_s_delY, __pyx_n_s_Iter, __pyx_n_s_MIN, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_R, __pyx_n_s_MAJ, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_II, __pyx_n_s_a, __pyx_n_s_adotVal, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Theta, __pyx_n_s_Rval, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 4190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__47);
  __Pyx_GIVEREF(__pyx_tuple__47);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_37Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_without_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_9, __pyx_t_2) < 0) __PYX_ERR(0, 4190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 60, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_9, 4190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 4190, __pyx_L1_error)
 4191:     # Grabbing data from the input object
+4192:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+4193:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4193, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+4194:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+4195:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+4196:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+4197:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4197, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+4198:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_3;
+4199:     cdef long long seq = obj.seq
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_seq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_seq = __pyx_t_2;
+4200:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_3;
+4201:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_3;
+4202:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+4203:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+4204:     Thetafunc = obj.Thetafunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Thetafunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Thetafunc = __pyx_t_1;
  __pyx_t_1 = 0;
+4205:     Rfunc = obj.Rfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Rfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Rfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 4206: 
 4207: 
 4208:     # Declaring other variables
 4209:     cdef double tic, toc
 4210:     cdef long long deli, delj, MN, PN, PE, PW, PS, Io, win, xmin, xmax, ymin, ymax, dum, countim, i, j, k, xo, yo, delX, delY, Iter
 4211:     cdef float  MIN, theta, c, s, R, MAJ, red, green, blue
+4212:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4212, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4212, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+4213:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4213, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4213, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+4214:     cdef np.ndarray[np.int64_t, ndim = 2] II = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4214, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_II.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_II = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_II.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4214, __pyx_L1_error)
    } else {__pyx_pybuffernd_II.diminfo[0].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_II.diminfo[0].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_II.diminfo[1].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_II.diminfo[1].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_II = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+4215:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 4215, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4215, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4215, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+4216:     cdef np.ndarray[np.float64_t, ndim = 1] adotVal = np.zeros(p, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 4216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4216, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_adotVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4216, __pyx_L1_error)
    } else {__pyx_pybuffernd_adotVal.diminfo[0].strides = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_adotVal.diminfo[0].shape = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_adotVal = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+4217:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 4217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4217, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4217, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+4218:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4218, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4218, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4218, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+4219:     cdef np.ndarray[np.float64_t, ndim = 1] Theta = np.zeros(p, dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 4219, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4219, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Theta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4219, __pyx_L1_error)
    } else {__pyx_pybuffernd_Theta.diminfo[0].strides = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Theta.diminfo[0].shape = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Theta = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+4220:     cdef np.ndarray[np.float64_t, ndim = 1] Rval = np.zeros(p, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 4220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4220, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Rval = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4220, __pyx_L1_error)
    } else {__pyx_pybuffernd_Rval.diminfo[0].strides = __pyx_pybuffernd_Rval.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Rval.diminfo[0].shape = __pyx_pybuffernd_Rval.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Rval = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+4221:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4221, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4221, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+4222:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 4222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4222, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4222, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+4223:     plantseed(myseed)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4223, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+4224:     col = np.random.random((p, 3))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4224, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4224, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4224, __pyx_L1_error)
  }
  __pyx_t_18 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_4));
  __pyx_t_4 = 0;
+4225:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4225, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4225, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 4225, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_tic = __pyx_t_22;
 4226: 
+4227:     if pdelNxy == []:
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4227, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 4227, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_23) {
/* … */
    goto __pyx_L3;
  }
+4228:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_7 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 4228, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_24(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_5 = __pyx_t_24(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_6), 2) < 0) __PYX_ERR(0, 4228, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 4228, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4228, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4228, __pyx_L1_error)
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4228, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_14 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4228, __pyx_L1_error)
    }
    __pyx_t_14 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 4229:     else:
+4230:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_25 = NULL;
    __pyx_t_26 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_25)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_25);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_26 = 1;
      }
    }
    __pyx_t_27 = PyTuple_New(7+__pyx_t_26); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    if (__pyx_t_25) {
      __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_25); __pyx_t_25 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_27, 0+__pyx_t_26, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_27, 1+__pyx_t_26, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_27, 2+__pyx_t_26, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_27, 3+__pyx_t_26, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_27, 4+__pyx_t_26, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_27, 5+__pyx_t_26, __pyx_t_1);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_27, 6+__pyx_t_26, __pyx_int_1);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_27, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 4230, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_27 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_27 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_27);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4230, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_27 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4230, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4230, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_24(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_27 = __pyx_t_24(__pyx_t_1); if (unlikely(!__pyx_t_27)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_27);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_1), 2) < 0) __PYX_ERR(0, 4230, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 4230, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4230, __pyx_L1_error)
    if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4230, __pyx_L1_error)
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4230, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_14 = ((PyArrayObject *)__pyx_t_27);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4230, __pyx_L1_error)
    }
    __pyx_t_14 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_27));
    __pyx_t_27 = 0;
  }
  __pyx_L3:;
 4231: 
+4232:     if labelsorted == 1:
  __pyx_t_23 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_23) {
/* … */
  }
+4233:         X, Y = labelsort(n, X, Y)
    __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = NULL;
    __pyx_t_26 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_27);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_27, function);
        __pyx_t_26 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(3+__pyx_t_26); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_26, __pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_26, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_26, ((PyObject *)__pyx_v_Y));
    __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 4233, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_27 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_27 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_27 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_4)->tp_iternext;
      index = 0; __pyx_t_27 = __pyx_t_24(__pyx_t_4); if (unlikely(!__pyx_t_27)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_27);
      index = 1; __pyx_t_6 = __pyx_t_24(__pyx_t_4); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_4), 2) < 0) __PYX_ERR(0, 4233, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 4233, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4233, __pyx_L1_error)
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4233, __pyx_L1_error)
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_27);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4233, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_27));
    __pyx_t_27 = 0;
    __pyx_t_14 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4233, __pyx_L1_error)
    }
    __pyx_t_14 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;
 4234: 
 4235: 
+4236:     Iter = 1
  __pyx_v_Iter = 1;
 4237: 
+4238:     while True:
  while (1) {
+4239:         if seq == 1 or seq == 2 or seq == 5:
    switch (__pyx_v_seq) {
      case 1:
      case 2:
      case 5:
/* … */
      break;
      default:
+4240:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+4241:                 I[X[k], Y[k]] = k + 1
        __pyx_t_29 = __pyx_v_k;
        __pyx_t_30 = __pyx_v_k;
        __pyx_t_31 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_32 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_32, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+4242:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_33 = __pyx_v_k;
        __pyx_t_34 = 0;
        __pyx_t_35 = __pyx_v_k;
        __pyx_t_36 = __pyx_v_k;
        __pyx_t_37 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_38 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_39 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_col.diminfo[1].strides));
+4243:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_40 = __pyx_v_k;
        __pyx_t_41 = 1;
        __pyx_t_42 = __pyx_v_k;
        __pyx_t_43 = __pyx_v_k;
        __pyx_t_44 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_45 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_46 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_col.diminfo[1].strides));
+4244:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_47 = __pyx_v_k;
        __pyx_t_48 = 2;
        __pyx_t_49 = __pyx_v_k;
        __pyx_t_50 = __pyx_v_k;
        __pyx_t_51 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_52 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_53 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_52, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_col.diminfo[1].strides));
+4245:                 Theta[k] = Thetafunc(X[k], Y[k], k + 1, 1, 1)
        __pyx_t_54 = __pyx_v_k;
        __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4245, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_55 = __pyx_v_k;
        __pyx_t_27 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4245, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4245, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_Thetafunc);
        __pyx_t_1 = __pyx_v_Thetafunc; __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_25 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4245, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_26, __pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_26, __pyx_t_4);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_6 = 0;
        __pyx_t_27 = 0;
        __pyx_t_4 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4245, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 4245, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_57 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_56;
+4246:                 Rval[k] = Rfunc(X[k], Y[k], k + 1, 1, Theta[k])
        __pyx_t_58 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_59 = __pyx_v_k;
        __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_60 = __pyx_v_k;
        __pyx_t_27 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_INCREF(__pyx_v_Rfunc);
        __pyx_t_6 = __pyx_v_Rfunc; __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_61 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_61, 0+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_61, 1+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_61, 2+__pyx_t_26, __pyx_t_4);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_61, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_61, 4+__pyx_t_26, __pyx_t_27);
        __pyx_t_1 = 0;
        __pyx_t_25 = 0;
        __pyx_t_4 = 0;
        __pyx_t_27 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_61, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 4246, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_62 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_56;
      }
 4247:         else:
+4248:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+4249:                 I[X[k], Y[k]] = k + 1
        __pyx_t_63 = __pyx_v_k;
        __pyx_t_64 = __pyx_v_k;
        __pyx_t_65 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_66 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+4250:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_67 = __pyx_v_k;
        __pyx_t_68 = 0;
        __pyx_t_69 = __pyx_v_k;
        __pyx_t_70 = __pyx_v_k;
        __pyx_t_71 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_72 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_73 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_73, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_col.diminfo[1].strides));
+4251:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_74 = __pyx_v_k;
        __pyx_t_75 = 1;
        __pyx_t_76 = __pyx_v_k;
        __pyx_t_77 = __pyx_v_k;
        __pyx_t_78 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_79 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_80 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_80, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_col.diminfo[1].strides));
+4252:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_81 = __pyx_v_k;
        __pyx_t_82 = 2;
        __pyx_t_83 = __pyx_v_k;
        __pyx_t_84 = __pyx_v_k;
        __pyx_t_85 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_86 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_87 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_87, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_82, __pyx_pybuffernd_col.diminfo[1].strides));
+4253:                 Rval[k] = Rfunc(X[k], Y[k], k + 1, 1, 0)
        __pyx_t_88 = __pyx_v_k;
        __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_89 = __pyx_v_k;
        __pyx_t_61 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_INCREF(__pyx_v_Rfunc);
        __pyx_t_4 = __pyx_v_Rfunc; __pyx_t_25 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_25)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_25);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_1 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__pyx_t_25) {
          __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_25); __pyx_t_25 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_26, __pyx_t_27);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_26, __pyx_int_0);
        __pyx_t_6 = 0;
        __pyx_t_61 = 0;
        __pyx_t_27 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 4253, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_90 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_56;
+4254:                 Theta[k] = Thetafunc(X[k], Y[k], k + 1, Rval[k], 1)
        __pyx_t_91 = __pyx_v_k;
        __pyx_t_4 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_92 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_93 = __pyx_v_k;
        __pyx_t_61 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_INCREF(__pyx_v_Thetafunc);
        __pyx_t_6 = __pyx_v_Thetafunc; __pyx_t_25 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_25)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_25);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_25) {
          __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_25); __pyx_t_25 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_26, __pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_26, __pyx_t_61);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_4 = 0;
        __pyx_t_1 = 0;
        __pyx_t_27 = 0;
        __pyx_t_61 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 4254, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_94 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_56;
      }
      break;
    }
 4255: 
 4256: 
+4257:         showriteframe(sa, sf, fd, 0, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, 0, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+4258:         MAJ = 1.0
    __pyx_v_MAJ = 1.0;
+4259:         countim = 0
    __pyx_v_countim = 0;
+4260:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4260, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4260, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4260, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      } else {
        __pyx_t_61 = PyTuple_New(1+1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4260, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_61, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_61, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4260, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4260, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 4260, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (!__pyx_t_23) break;
+4261:             countim = countim + 1
      __pyx_v_countim = (__pyx_v_countim + 1);
+4262:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+4263:                 if a[k] == 1:
        __pyx_t_95 = __pyx_v_k;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_23) {
/* … */
        }
      }
+4264:                     a[k] = 0
          __pyx_t_96 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+4265:                     xo = X[k]
          __pyx_t_97 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_X.diminfo[0].strides));
+4266:                     yo = Y[k]
          __pyx_t_98 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Y.diminfo[0].strides));
+4267:                     theta = Theta[k]
          __pyx_t_99 = __pyx_v_k;
          __pyx_v_theta = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_Theta.diminfo[0].strides));
+4268:                     c = math.cos(theta)
          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4268, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_61 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_cos); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4268, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4268, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_61))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_61);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_61);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_61, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_61, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4268, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_GOTREF(__pyx_t_5);
          } else {
            __pyx_t_27 = PyTuple_New(1+1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4268, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_27, 0+1, __pyx_t_7);
            __pyx_t_7 = 0;
            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_27, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4268, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          }
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_100 = __pyx_PyFloat_AsFloat(__pyx_t_5); if (unlikely((__pyx_t_100 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 4268, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_v_c = __pyx_t_100;
+4269:                     s = -math.sin(theta)
          __pyx_t_61 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4269, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_61, __pyx_n_s_sin); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4269, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_61 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4269, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_27);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_27, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_t_61); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4269, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
            __Pyx_GOTREF(__pyx_t_5);
          } else {
            __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4269, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_GIVEREF(__pyx_t_61);
            PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_61);
            __pyx_t_61 = 0;
            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4269, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          }
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_27 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4269, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_100 = __pyx_PyFloat_AsFloat(__pyx_t_27); if (unlikely((__pyx_t_100 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 4269, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_v_s = __pyx_t_100;
+4270:                     Io = I[xo, yo]
          __pyx_t_101 = __pyx_v_xo;
          __pyx_t_102 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides));
+4271:                     MIN = MAJ / Rval[k]
          __pyx_t_103 = __pyx_v_k;
          __pyx_v_MIN = (((__pyx_t_5numpy_float64_t)__pyx_v_MAJ) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_Rval.diminfo[0].strides)));
+4272:                     delX = math.ceil(math.sqrt((MAJ * c) ** 2 + (MIN * s) ** 2))
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4272, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ceil); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4272, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_61 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4272, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_61, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4272, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_61 = PyFloat_FromDouble((powf((__pyx_v_MAJ * __pyx_v_c), 2.0) + powf((__pyx_v_MIN * __pyx_v_s), 2.0))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4272, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_1) {
            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_61); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4272, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
            __Pyx_GOTREF(__pyx_t_5);
          } else {
            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4272, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
            __Pyx_GIVEREF(__pyx_t_61);
            PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_61);
            __pyx_t_61 = 0;
            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4272, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4272, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_GOTREF(__pyx_t_27);
          } else {
            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4272, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4272, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_104 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_27); if (unlikely((__pyx_t_104 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4272, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_v_delX = __pyx_t_104;
+4273:                     delY = math.ceil(math.sqrt((MAJ * s) ** 2 + (MIN * c) ** 2))
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4273, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4273, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4273, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4273, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = PyFloat_FromDouble((powf((__pyx_v_MAJ * __pyx_v_s), 2.0) + powf((__pyx_v_MIN * __pyx_v_c), 2.0))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4273, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_61 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_61 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_61)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_61);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_61) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4273, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_GOTREF(__pyx_t_6);
          } else {
            __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4273, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_61); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_61); __pyx_t_61 = NULL;
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4273, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4273, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_27);
          } else {
            __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4273, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4273, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_104 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_27); if (unlikely((__pyx_t_104 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4273, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_v_delY = __pyx_t_104;
+4274:                     red = col[k, 0]
          __pyx_t_104 = __pyx_v_k;
          __pyx_t_105 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_105, __pyx_pybuffernd_col.diminfo[1].strides));
+4275:                     green = col[k, 1]
          __pyx_t_106 = __pyx_v_k;
          __pyx_t_107 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_col.diminfo[1].strides));
+4276:                     blue = col[k, 2]
          __pyx_t_108 = __pyx_v_k;
          __pyx_t_109 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_col.diminfo[1].strides));
 4277: 
+4278:                     for deli in range(0, delX + 1):
          __pyx_t_110 = (__pyx_v_delX + 1);
          for (__pyx_t_111 = 0; __pyx_t_111 < __pyx_t_110; __pyx_t_111+=1) {
            __pyx_v_deli = __pyx_t_111;
+4279:                         for delj in range(0, delY + 1):
            __pyx_t_112 = (__pyx_v_delY + 1);
            for (__pyx_t_113 = 0; __pyx_t_113 < __pyx_t_112; __pyx_t_113+=1) {
              __pyx_v_delj = __pyx_t_113;
+4280:                             if ((deli * c - delj * s) / MAJ) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_23 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_MAJ), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
 4281: 
+4282:                                 i, j = xo + deli, yo + delj
                __pyx_t_114 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_115 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_114;
                __pyx_v_j = __pyx_t_115;
+4283:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_116 = (0 <= __pyx_v_i);
                if (__pyx_t_116) {
                  __pyx_t_116 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_117 = (__pyx_t_116 != 0);
                if (__pyx_t_117) {
                } else {
                  __pyx_t_23 = __pyx_t_117;
                  goto __pyx_L28_bool_binop_done;
                }
                __pyx_t_117 = (0 <= __pyx_v_j);
                if (__pyx_t_117) {
                  __pyx_t_117 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_116 = (__pyx_t_117 != 0);
                __pyx_t_23 = __pyx_t_116;
                __pyx_L28_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4284:                                     if I[i, j] == 0:
                  __pyx_t_115 = __pyx_v_i;
                  __pyx_t_114 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4285:                                         for dum in range(1):
                    for (__pyx_t_118 = 0; __pyx_t_118 < 1; __pyx_t_118+=1) {
                      __pyx_v_dum = __pyx_t_118;
 4286: 
+4287:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4288:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_119 = (__pyx_v_i - 1);
                        __pyx_t_120 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4289:                                                     I[i, j] = Io
                          __pyx_t_121 = __pyx_v_i;
                          __pyx_t_122 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4290:                                                     Col[i, j, 2] = red
                          __pyx_t_123 = __pyx_v_i;
                          __pyx_t_124 = __pyx_v_j;
                          __pyx_t_125 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_124, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_125, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4291:                                                     Col[i, j, 1] = green
                          __pyx_t_126 = __pyx_v_i;
                          __pyx_t_127 = __pyx_v_j;
                          __pyx_t_128 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4292:                                                     Col[i, j, 0] = blue
                          __pyx_t_129 = __pyx_v_i;
                          __pyx_t_130 = __pyx_v_j;
                          __pyx_t_131 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4293:                                                     a[k] = 1
                          __pyx_t_132 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4294:                                                     break
                          goto __pyx_L32_break;
+4295:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4296:                                                 if I[i, j - 1] == Io:
                        __pyx_t_133 = __pyx_v_i;
                        __pyx_t_134 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4297:                                                     I[i, j] = Io
                          __pyx_t_135 = __pyx_v_i;
                          __pyx_t_136 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4298:                                                     Col[i, j, 2] = red
                          __pyx_t_137 = __pyx_v_i;
                          __pyx_t_138 = __pyx_v_j;
                          __pyx_t_139 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4299:                                                     Col[i, j, 1] = green
                          __pyx_t_140 = __pyx_v_i;
                          __pyx_t_141 = __pyx_v_j;
                          __pyx_t_142 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4300:                                                     Col[i, j, 0] = blue
                          __pyx_t_143 = __pyx_v_i;
                          __pyx_t_144 = __pyx_v_j;
                          __pyx_t_145 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4301:                                                     a[k] = 1
                          __pyx_t_146 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4302:                                                     break
                          goto __pyx_L32_break;
 4303: 
+4304:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4305:                                                 if I[i, j + 1] == Io:
                        __pyx_t_147 = __pyx_v_i;
                        __pyx_t_148 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_148, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4306:                                                     I[i, j] = Io
                          __pyx_t_149 = __pyx_v_i;
                          __pyx_t_150 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_150, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4307:                                                     Col[i, j, 2] = red
                          __pyx_t_151 = __pyx_v_i;
                          __pyx_t_152 = __pyx_v_j;
                          __pyx_t_153 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_153, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4308:                                                     Col[i, j, 1] = green
                          __pyx_t_154 = __pyx_v_i;
                          __pyx_t_155 = __pyx_v_j;
                          __pyx_t_156 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_155, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_156, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4309:                                                     Col[i, j, 0] = blue
                          __pyx_t_157 = __pyx_v_i;
                          __pyx_t_158 = __pyx_v_j;
                          __pyx_t_159 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4310:                                                     a[k] = 1
                          __pyx_t_160 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4311:                                                     break
                          goto __pyx_L32_break;
 4312: 
 4313: 
+4314:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L32_break:;
+4315:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_161 = (__pyx_v_i + 1);
                        __pyx_t_162 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_161, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_162, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4316:                                                     I[i, j] = Io
                          __pyx_t_163 = __pyx_v_i;
                          __pyx_t_164 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_164, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4317:                                                     Col[i, j, 2] = red
                          __pyx_t_165 = __pyx_v_i;
                          __pyx_t_166 = __pyx_v_j;
                          __pyx_t_167 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4318:                                                     Col[i, j, 1] = green
                          __pyx_t_168 = __pyx_v_i;
                          __pyx_t_169 = __pyx_v_j;
                          __pyx_t_170 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_170, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4319:                                                     Col[i, j, 0] = blue
                          __pyx_t_171 = __pyx_v_i;
                          __pyx_t_172 = __pyx_v_j;
                          __pyx_t_173 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_172, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_173, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4320:                                                     a[k] = 1
                          __pyx_t_174 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_174, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4321:                                                     break
                          goto __pyx_L32_break;
 4322: 
 4323: 
+4324:                                 i, j = xo - deli, yo - delj
                __pyx_t_118 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_175 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_118;
                __pyx_v_j = __pyx_t_175;
+4325:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_116 = (0 <= __pyx_v_i);
                if (__pyx_t_116) {
                  __pyx_t_116 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_117 = (__pyx_t_116 != 0);
                if (__pyx_t_117) {
                } else {
                  __pyx_t_23 = __pyx_t_117;
                  goto __pyx_L42_bool_binop_done;
                }
                __pyx_t_117 = (0 <= __pyx_v_j);
                if (__pyx_t_117) {
                  __pyx_t_117 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_116 = (__pyx_t_117 != 0);
                __pyx_t_23 = __pyx_t_116;
                __pyx_L42_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4326:                                     if I[i, j] == 0:
                  __pyx_t_175 = __pyx_v_i;
                  __pyx_t_118 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4327:                                         for dum in range(1):
                    for (__pyx_t_176 = 0; __pyx_t_176 < 1; __pyx_t_176+=1) {
                      __pyx_v_dum = __pyx_t_176;
 4328: 
+4329:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4330:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_177 = (__pyx_v_i - 1);
                        __pyx_t_178 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_178, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4331:                                                     I[i, j] = Io
                          __pyx_t_179 = __pyx_v_i;
                          __pyx_t_180 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_180, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4332:                                                     Col[i, j, 2] = red
                          __pyx_t_181 = __pyx_v_i;
                          __pyx_t_182 = __pyx_v_j;
                          __pyx_t_183 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_181, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_182, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_183, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4333:                                                     Col[i, j, 1] = green
                          __pyx_t_184 = __pyx_v_i;
                          __pyx_t_185 = __pyx_v_j;
                          __pyx_t_186 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4334:                                                     Col[i, j, 0] = blue
                          __pyx_t_187 = __pyx_v_i;
                          __pyx_t_188 = __pyx_v_j;
                          __pyx_t_189 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4335:                                                     a[k] = 1
                          __pyx_t_190 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_190, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4336:                                                     break
                          goto __pyx_L46_break;
+4337:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4338:                                                 if I[i, j - 1] == Io:
                        __pyx_t_191 = __pyx_v_i;
                        __pyx_t_192 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_191, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_192, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4339:                                                     I[i, j] = Io
                          __pyx_t_193 = __pyx_v_i;
                          __pyx_t_194 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_193, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_194, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4340:                                                     Col[i, j, 2] = red
                          __pyx_t_195 = __pyx_v_i;
                          __pyx_t_196 = __pyx_v_j;
                          __pyx_t_197 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_195, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_196, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_197, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4341:                                                     Col[i, j, 1] = green
                          __pyx_t_198 = __pyx_v_i;
                          __pyx_t_199 = __pyx_v_j;
                          __pyx_t_200 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_199, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_200, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4342:                                                     Col[i, j, 0] = blue
                          __pyx_t_201 = __pyx_v_i;
                          __pyx_t_202 = __pyx_v_j;
                          __pyx_t_203 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_201, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_202, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4343:                                                     a[k] = 1
                          __pyx_t_204 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_204, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4344:                                                     break
                          goto __pyx_L46_break;
 4345: 
+4346:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4347:                                                 if I[i, j + 1] == Io:
                        __pyx_t_205 = __pyx_v_i;
                        __pyx_t_206 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_205, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_206, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4348:                                                     I[i, j] = Io
                          __pyx_t_207 = __pyx_v_i;
                          __pyx_t_208 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_207, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_208, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4349:                                                     Col[i, j, 2] = red
                          __pyx_t_209 = __pyx_v_i;
                          __pyx_t_210 = __pyx_v_j;
                          __pyx_t_211 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_209, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_210, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_211, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4350:                                                     Col[i, j, 1] = green
                          __pyx_t_212 = __pyx_v_i;
                          __pyx_t_213 = __pyx_v_j;
                          __pyx_t_214 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_212, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_213, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_214, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4351:                                                     Col[i, j, 0] = blue
                          __pyx_t_215 = __pyx_v_i;
                          __pyx_t_216 = __pyx_v_j;
                          __pyx_t_217 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_215, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_216, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_217, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4352:                                                     a[k] = 1
                          __pyx_t_218 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_218, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4353:                                                     break
                          goto __pyx_L46_break;
 4354: 
 4355: 
+4356:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L46_break:;
+4357:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_219 = (__pyx_v_i + 1);
                        __pyx_t_220 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_219, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_220, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4358:                                                     I[i, j] = Io
                          __pyx_t_221 = __pyx_v_i;
                          __pyx_t_222 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_221, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_222, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4359:                                                     Col[i, j, 2] = red
                          __pyx_t_223 = __pyx_v_i;
                          __pyx_t_224 = __pyx_v_j;
                          __pyx_t_225 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_223, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_224, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_225, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4360:                                                     Col[i, j, 1] = green
                          __pyx_t_226 = __pyx_v_i;
                          __pyx_t_227 = __pyx_v_j;
                          __pyx_t_228 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_226, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_227, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_228, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4361:                                                     Col[i, j, 0] = blue
                          __pyx_t_229 = __pyx_v_i;
                          __pyx_t_230 = __pyx_v_j;
                          __pyx_t_231 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_229, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_230, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4362:                                                     a[k] = 1
                          __pyx_t_232 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_232, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4363:                                                     break
                          goto __pyx_L46_break;
 4364: 
 4365: 
+4366:                     for deli in range(0, -delX - 1, -1):
          __pyx_t_110 = ((-__pyx_v_delX) - 1);
          for (__pyx_t_111 = 0; __pyx_t_111 > __pyx_t_110; __pyx_t_111-=1) {
            __pyx_v_deli = __pyx_t_111;
+4367:                         for delj in range(0, delY + 1):
            __pyx_t_112 = (__pyx_v_delY + 1);
            for (__pyx_t_113 = 0; __pyx_t_113 < __pyx_t_112; __pyx_t_113+=1) {
              __pyx_v_delj = __pyx_t_113;
+4368:                             if ((deli * c - delj * s) / MAJ) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_23 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_MAJ), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
 4369: 
+4370:                                 i, j = xo + deli, yo + delj
                __pyx_t_176 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_233 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_176;
                __pyx_v_j = __pyx_t_233;
+4371:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_116 = (0 <= __pyx_v_i);
                if (__pyx_t_116) {
                  __pyx_t_116 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_117 = (__pyx_t_116 != 0);
                if (__pyx_t_117) {
                } else {
                  __pyx_t_23 = __pyx_t_117;
                  goto __pyx_L61_bool_binop_done;
                }
                __pyx_t_117 = (0 <= __pyx_v_j);
                if (__pyx_t_117) {
                  __pyx_t_117 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_116 = (__pyx_t_117 != 0);
                __pyx_t_23 = __pyx_t_116;
                __pyx_L61_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4372:                                     if I[i, j] == 0:
                  __pyx_t_233 = __pyx_v_i;
                  __pyx_t_176 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_233, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_176, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4373:                                         for dum in range(1):
                    for (__pyx_t_234 = 0; __pyx_t_234 < 1; __pyx_t_234+=1) {
                      __pyx_v_dum = __pyx_t_234;
 4374: 
+4375:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4376:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_235 = (__pyx_v_i - 1);
                        __pyx_t_236 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_235, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_236, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4377:                                                     I[i, j] = Io
                          __pyx_t_237 = __pyx_v_i;
                          __pyx_t_238 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_237, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_238, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4378:                                                     Col[i, j, 2] = red
                          __pyx_t_239 = __pyx_v_i;
                          __pyx_t_240 = __pyx_v_j;
                          __pyx_t_241 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_239, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_240, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_241, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4379:                                                     Col[i, j, 1] = green
                          __pyx_t_242 = __pyx_v_i;
                          __pyx_t_243 = __pyx_v_j;
                          __pyx_t_244 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_242, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_243, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_244, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4380:                                                     Col[i, j, 0] = blue
                          __pyx_t_245 = __pyx_v_i;
                          __pyx_t_246 = __pyx_v_j;
                          __pyx_t_247 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_245, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_246, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_247, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4381:                                                     a[k] = 1
                          __pyx_t_248 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_248, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4382:                                                     break
                          goto __pyx_L65_break;
+4383:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4384:                                                 if I[i, j - 1] == Io:
                        __pyx_t_249 = __pyx_v_i;
                        __pyx_t_250 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_249, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_250, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4385:                                                     I[i, j] = Io
                          __pyx_t_251 = __pyx_v_i;
                          __pyx_t_252 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_251, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_252, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4386:                                                     Col[i, j, 2] = red
                          __pyx_t_253 = __pyx_v_i;
                          __pyx_t_254 = __pyx_v_j;
                          __pyx_t_255 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_253, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_254, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_255, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4387:                                                     Col[i, j, 1] = green
                          __pyx_t_256 = __pyx_v_i;
                          __pyx_t_257 = __pyx_v_j;
                          __pyx_t_258 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_256, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_257, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_258, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4388:                                                     Col[i, j, 0] = blue
                          __pyx_t_259 = __pyx_v_i;
                          __pyx_t_260 = __pyx_v_j;
                          __pyx_t_261 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_259, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_260, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_261, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4389:                                                     a[k] = 1
                          __pyx_t_262 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_262, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4390:                                                     break
                          goto __pyx_L65_break;
 4391: 
+4392:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4393:                                                 if I[i, j + 1] == Io:
                        __pyx_t_263 = __pyx_v_i;
                        __pyx_t_264 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_263, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_264, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4394:                                                     I[i, j] = Io
                          __pyx_t_265 = __pyx_v_i;
                          __pyx_t_266 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_265, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_266, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4395:                                                     Col[i, j, 2] = red
                          __pyx_t_267 = __pyx_v_i;
                          __pyx_t_268 = __pyx_v_j;
                          __pyx_t_269 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_267, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_268, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_269, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4396:                                                     Col[i, j, 1] = green
                          __pyx_t_270 = __pyx_v_i;
                          __pyx_t_271 = __pyx_v_j;
                          __pyx_t_272 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_270, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_271, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_272, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4397:                                                     Col[i, j, 0] = blue
                          __pyx_t_273 = __pyx_v_i;
                          __pyx_t_274 = __pyx_v_j;
                          __pyx_t_275 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_273, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_274, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_275, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4398:                                                     a[k] = 1
                          __pyx_t_276 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_276, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4399:                                                     break
                          goto __pyx_L65_break;
 4400: 
 4401: 
+4402:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L65_break:;
+4403:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_277 = (__pyx_v_i + 1);
                        __pyx_t_278 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_277, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_278, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4404:                                                     I[i, j] = Io
                          __pyx_t_279 = __pyx_v_i;
                          __pyx_t_280 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_279, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_280, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4405:                                                     Col[i, j, 2] = red
                          __pyx_t_281 = __pyx_v_i;
                          __pyx_t_282 = __pyx_v_j;
                          __pyx_t_283 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_281, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_282, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_283, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4406:                                                     Col[i, j, 1] = green
                          __pyx_t_284 = __pyx_v_i;
                          __pyx_t_285 = __pyx_v_j;
                          __pyx_t_286 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_285, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_286, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4407:                                                     Col[i, j, 0] = blue
                          __pyx_t_287 = __pyx_v_i;
                          __pyx_t_288 = __pyx_v_j;
                          __pyx_t_289 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_287, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_288, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_289, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4408:                                                     a[k] = 1
                          __pyx_t_290 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_290, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4409:                                                     break
                          goto __pyx_L65_break;
 4410: 
 4411: 
+4412:                                 i, j = xo - deli, yo - delj
                __pyx_t_234 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_291 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_234;
                __pyx_v_j = __pyx_t_291;
+4413:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_116 = (0 <= __pyx_v_i);
                if (__pyx_t_116) {
                  __pyx_t_116 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_117 = (__pyx_t_116 != 0);
                if (__pyx_t_117) {
                } else {
                  __pyx_t_23 = __pyx_t_117;
                  goto __pyx_L75_bool_binop_done;
                }
                __pyx_t_117 = (0 <= __pyx_v_j);
                if (__pyx_t_117) {
                  __pyx_t_117 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_116 = (__pyx_t_117 != 0);
                __pyx_t_23 = __pyx_t_116;
                __pyx_L75_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4414:                                     if I[i, j] == 0:
                  __pyx_t_291 = __pyx_v_i;
                  __pyx_t_234 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_291, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_234, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4415:                                         for dum in range(1):
                    for (__pyx_t_292 = 0; __pyx_t_292 < 1; __pyx_t_292+=1) {
                      __pyx_v_dum = __pyx_t_292;
 4416: 
+4417:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4418:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_293 = (__pyx_v_i - 1);
                        __pyx_t_294 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_293, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_294, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4419:                                                     I[i, j] = Io
                          __pyx_t_295 = __pyx_v_i;
                          __pyx_t_296 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_295, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_296, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4420:                                                     Col[i, j, 2] = red
                          __pyx_t_297 = __pyx_v_i;
                          __pyx_t_298 = __pyx_v_j;
                          __pyx_t_299 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_297, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_298, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_299, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4421:                                                     Col[i, j, 1] = green
                          __pyx_t_300 = __pyx_v_i;
                          __pyx_t_301 = __pyx_v_j;
                          __pyx_t_302 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_300, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_301, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_302, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4422:                                                     Col[i, j, 0] = blue
                          __pyx_t_303 = __pyx_v_i;
                          __pyx_t_304 = __pyx_v_j;
                          __pyx_t_305 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_303, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_304, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_305, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4423:                                                     a[k] = 1
                          __pyx_t_306 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_306, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4424:                                                     break
                          goto __pyx_L79_break;
+4425:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4426:                                                 if I[i, j - 1] == Io:
                        __pyx_t_307 = __pyx_v_i;
                        __pyx_t_308 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_307, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_308, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4427:                                                     I[i, j] = Io
                          __pyx_t_309 = __pyx_v_i;
                          __pyx_t_310 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_309, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_310, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4428:                                                     Col[i, j, 2] = red
                          __pyx_t_311 = __pyx_v_i;
                          __pyx_t_312 = __pyx_v_j;
                          __pyx_t_313 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_311, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_312, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_313, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4429:                                                     Col[i, j, 1] = green
                          __pyx_t_314 = __pyx_v_i;
                          __pyx_t_315 = __pyx_v_j;
                          __pyx_t_316 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_314, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_315, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_316, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4430:                                                     Col[i, j, 0] = blue
                          __pyx_t_317 = __pyx_v_i;
                          __pyx_t_318 = __pyx_v_j;
                          __pyx_t_319 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_317, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_318, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_319, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4431:                                                     a[k] = 1
                          __pyx_t_320 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_320, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4432:                                                     break
                          goto __pyx_L79_break;
 4433: 
+4434:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4435:                                                 if I[i, j + 1] == Io:
                        __pyx_t_321 = __pyx_v_i;
                        __pyx_t_322 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_321, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_322, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4436:                                                     I[i, j] = Io
                          __pyx_t_323 = __pyx_v_i;
                          __pyx_t_324 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_323, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_324, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4437:                                                     Col[i, j, 2] = red
                          __pyx_t_325 = __pyx_v_i;
                          __pyx_t_326 = __pyx_v_j;
                          __pyx_t_327 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_325, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_326, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_327, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4438:                                                     Col[i, j, 1] = green
                          __pyx_t_328 = __pyx_v_i;
                          __pyx_t_329 = __pyx_v_j;
                          __pyx_t_330 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_328, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_329, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_330, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4439:                                                     Col[i, j, 0] = blue
                          __pyx_t_331 = __pyx_v_i;
                          __pyx_t_332 = __pyx_v_j;
                          __pyx_t_333 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_331, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_332, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_333, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4440:                                                     a[k] = 1
                          __pyx_t_334 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_334, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4441:                                                     break
                          goto __pyx_L79_break;
 4442: 
 4443: 
+4444:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L79_break:;
+4445:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_335 = (__pyx_v_i + 1);
                        __pyx_t_336 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_335, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_336, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4446:                                                     I[i, j] = Io
                          __pyx_t_337 = __pyx_v_i;
                          __pyx_t_338 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_337, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_338, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4447:                                                     Col[i, j, 2] = red
                          __pyx_t_339 = __pyx_v_i;
                          __pyx_t_340 = __pyx_v_j;
                          __pyx_t_341 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_339, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_340, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_341, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4448:                                                     Col[i, j, 1] = green
                          __pyx_t_342 = __pyx_v_i;
                          __pyx_t_343 = __pyx_v_j;
                          __pyx_t_344 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_342, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_343, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_344, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4449:                                                     Col[i, j, 0] = blue
                          __pyx_t_345 = __pyx_v_i;
                          __pyx_t_346 = __pyx_v_j;
                          __pyx_t_347 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_345, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_346, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_347, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4450:                                                     a[k] = 1
                          __pyx_t_348 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_348, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4451:                                                     break
                          goto __pyx_L79_break;
 4452: 
 4453: 
 4454: 
+4455:                     if a[k] == 0:
          __pyx_t_110 = __pyx_v_k;
          __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_23) {
/* … */
          }
+4456:                         xmin = max(0, xo - delX)
            __pyx_t_111 = (__pyx_v_xo - __pyx_v_delX);
            __pyx_t_349 = 0;
            if (((__pyx_t_111 > __pyx_t_349) != 0)) {
              __pyx_t_112 = __pyx_t_111;
            } else {
              __pyx_t_112 = __pyx_t_349;
            }
            __pyx_v_xmin = __pyx_t_112;
+4457:                         xmax = min(m - 1, xo + delX)
            __pyx_t_112 = (__pyx_v_xo + __pyx_v_delX);
            __pyx_t_111 = (__pyx_v_m - 1);
            if (((__pyx_t_112 < __pyx_t_111) != 0)) {
              __pyx_t_113 = __pyx_t_112;
            } else {
              __pyx_t_113 = __pyx_t_111;
            }
            __pyx_v_xmax = __pyx_t_113;
+4458:                         ymin = max(0, yo - delY)
            __pyx_t_113 = (__pyx_v_yo - __pyx_v_delY);
            __pyx_t_349 = 0;
            if (((__pyx_t_113 > __pyx_t_349) != 0)) {
              __pyx_t_112 = __pyx_t_113;
            } else {
              __pyx_t_112 = __pyx_t_349;
            }
            __pyx_v_ymin = __pyx_t_112;
+4459:                         ymax = min(n - 1, yo + delY)
            __pyx_t_112 = (__pyx_v_yo + __pyx_v_delY);
            __pyx_t_113 = (__pyx_v_n - 1);
            if (((__pyx_t_112 < __pyx_t_113) != 0)) {
              __pyx_t_111 = __pyx_t_112;
            } else {
              __pyx_t_111 = __pyx_t_113;
            }
            __pyx_v_ymax = __pyx_t_111;
+4460:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_111 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 4461: 
+4462:             MAJ = MAJ + 1.0
      __pyx_v_MAJ = (__pyx_v_MAJ + 1.0);
+4463:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
    }
+4464:         if asy == 0:
    __pyx_t_23 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_23) {
/* … */
    }
+4465:             break
      goto __pyx_L12_break;
 4466:         else:
+4467:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4467, __pyx_L1_error)
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_all); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (__pyx_t_4) {
        __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4467, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        __pyx_t_27 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4467, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_27);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_27, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 4467, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_23) {
/* … */
      }
+4468:                 break
        goto __pyx_L12_break;
 4469:             else:
+4470:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4470, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+4471:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
        __pyx_t_1 = 0;
        __pyx_t_4 = 0;
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4471, __pyx_L1_error)
        __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4471, __pyx_L1_error)
        }
        __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
+4472:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 4472, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4472, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4472, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_1));
        __pyx_t_1 = 0;
+4473:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4473, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_centroids); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4473, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4473, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4473, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4473, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_61 = PyTuple_New(4+__pyx_t_26); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4473, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_61, 0+__pyx_t_26, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_61, 1+__pyx_t_26, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_61, 2+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_61, 3+__pyx_t_26, __pyx_t_27);
        __pyx_t_7 = 0;
        __pyx_t_6 = 0;
        __pyx_t_27 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_61, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4473, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
          PyObject* sequence = __pyx_t_1;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 4473, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_61 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_61 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_61);
          #else
          __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4473, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_61 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4473, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          #endif
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_27 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4473, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_24 = Py_TYPE(__pyx_t_27)->tp_iternext;
          index = 0; __pyx_t_4 = __pyx_t_24(__pyx_t_27); if (unlikely(!__pyx_t_4)) goto __pyx_L91_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_4);
          index = 1; __pyx_t_61 = __pyx_t_24(__pyx_t_27); if (unlikely(!__pyx_t_61)) goto __pyx_L91_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_61);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_27), 2) < 0) __PYX_ERR(0, 4473, __pyx_L1_error)
          __pyx_t_24 = NULL;
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          goto __pyx_L92_unpacking_done;
          __pyx_L91_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_24 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 4473, __pyx_L1_error)
          __pyx_L92_unpacking_done:;
        }
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4473, __pyx_L1_error)
        if (!(likely(((__pyx_t_61) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_61, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4473, __pyx_L1_error)
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4473, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_61);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4473, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_61));
        __pyx_t_61 = 0;
+4474:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 4475: 
+4476:     toc = time.time()
  __pyx_t_61 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_61);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_61, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
  __pyx_t_61 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_61 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_61)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_61);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (__pyx_t_61) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_61); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4476, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4476, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 4476, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_toc = __pyx_t_22;
+4477:     obj.exetime = toc - tic
  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_1) < 0) __PYX_ERR(0, 4477, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4478:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 4478, __pyx_L1_error)
+4479:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 4479, __pyx_L1_error)
+4480:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 4480, __pyx_L1_error)
+4481:     obj.ThetaValues = Theta
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_ThetaValues, ((PyObject *)__pyx_v_Theta)) < 0) __PYX_ERR(0, 4481, __pyx_L1_error)
+4482:     obj.Rvalues = Rval
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Rvalues, ((PyObject *)__pyx_v_Rval)) < 0) __PYX_ERR(0, 4482, __pyx_L1_error)
+4483:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 4483, __pyx_L1_error)
+4484:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 4485: 
+4486: def Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_39Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_39Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot = {"Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot", (PyCFunction)__pyx_pw_9libEVOLVE_39Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_39Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_38Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_38Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_R;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PY_LONG_LONG __pyx_v_seq;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Thetafunc = NULL;
  PyObject *__pyx_v_Adotfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_delX;
  PY_LONG_LONG __pyx_v_delY;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_MAJceil;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_MINceil;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_MIN;
  float __pyx_v_theta;
  float __pyx_v_c;
  float __pyx_v_s;
  float __pyx_v_dr;
  float __pyx_v_tmp;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Theta = 0;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_adotVal = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  double __pyx_v_adotValmax;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Theta;
  __Pyx_Buffer __pyx_pybuffer_Theta;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_adotVal;
  __Pyx_Buffer __pyx_pybuffer_adotVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Theta.pybuffer.buf = NULL;
  __pyx_pybuffer_Theta.refcount = 0;
  __pyx_pybuffernd_Theta.data = NULL;
  __pyx_pybuffernd_Theta.rcbuffer = &__pyx_pybuffer_Theta;
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_adotVal.pybuffer.buf = NULL;
  __pyx_pybuffer_adotVal.refcount = 0;
  __pyx_pybuffernd_adotVal.data = NULL;
  __pyx_pybuffernd_adotVal.rcbuffer = &__pyx_pybuffer_adotVal;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_27);
  __Pyx_XDECREF(__pyx_t_61);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Thetafunc);
  __Pyx_XDECREF(__pyx_v_Adotfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Theta);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_adotVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__49 = PyTuple_Pack(63, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_R, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_seq, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Thetafunc, __pyx_n_s_Adotfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_MN, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_dum, __pyx_n_s_countim, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_delX, __pyx_n_s_delY, __pyx_n_s_MAJceil, __pyx_n_s_MINceil, __pyx_n_s_Iter, __pyx_n_s_MIN, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_dr, __pyx_n_s_tmp, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Theta, __pyx_n_s_MAJ, __pyx_n_s_adotVal, __pyx_n_s_Col, __pyx_n_s_col, __pyx_n_s_adotValmax); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 4486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__49);
  __Pyx_GIVEREF(__pyx_tuple__49);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_39Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_without_aspect_with_theta_with_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_10, __pyx_t_2) < 0) __PYX_ERR(0, 4486, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 63, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_10, 4486, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 4486, __pyx_L1_error)
 4487: 
 4488:     # Grabbing data from the input Object
+4489:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4489, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+4490:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4490, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+4491:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4491, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+4492:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4492, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+4493:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4493, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+4494:     cdef float R = obj.R
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_R); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 4494, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_R = __pyx_t_3;
+4495:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4495, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+4496:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4496, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+4497:     cdef long long seq = obj.seq
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_seq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4497, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_seq = __pyx_t_2;
+4498:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4498, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_4;
+4499:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4499, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_4;
+4500:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+4501:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+4502:     Thetafunc = obj.Thetafunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Thetafunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Thetafunc = __pyx_t_1;
  __pyx_t_1 = 0;
+4503:     Adotfunc = obj.Adotfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Adotfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Adotfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 4504: 
 4505:     # Declaring other variables
 4506:     cdef double tic, toc
 4507:     cdef long long deli, delj, MN, PN, PE, PW, PS, Io, win, xmin, xmax, ymin, ymax, dum, countim, i, j, k, xo, yo, delX, delY, MAJceil, MINceil, Iter
 4508:     cdef float MIN, theta, c, s, dr, tmp, red, green, blue
+4509:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4509, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4509, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+4510:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4510, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4510, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+4511:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 4511, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4511, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4511, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+4512:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4512, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4512, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4512, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+4513:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 4513, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4513, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4513, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+4514:     cdef np.ndarray[np.float64_t, ndim = 1] Theta = np.zeros(p, dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 4514, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4514, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Theta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4514, __pyx_L1_error)
    } else {__pyx_pybuffernd_Theta.diminfo[0].strides = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Theta.diminfo[0].shape = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_Theta = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+4515:     cdef np.ndarray[np.float64_t, ndim = 1] MAJ = np.zeros(p, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 4515, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4515, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4515, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+4516:     cdef np.ndarray[np.float64_t, ndim = 1] adotVal = np.zeros(p, dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4516, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4516, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_adotVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4516, __pyx_L1_error)
    } else {__pyx_pybuffernd_adotVal.diminfo[0].strides = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_adotVal.diminfo[0].shape = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_adotVal = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+4517:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4517, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4517, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+4518:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4518, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4518, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4518, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+4519:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4519, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4520:     col = np.random.random((p, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4520, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4520, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4520, __pyx_L1_error)
  }
  __pyx_t_18 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_7));
  __pyx_t_7 = 0;
+4521:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4521, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4521, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 4521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_tic = __pyx_t_22;
 4522: 
+4523:     if pdelNxy == []:
  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 4523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_23) {
/* … */
    goto __pyx_L3;
  }
+4524:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_1 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
      PyObject* sequence = __pyx_t_1;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 4524, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4524, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4524, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4524, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_5)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_24(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_6 = __pyx_t_24(__pyx_t_5); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_5), 2) < 0) __PYX_ERR(0, 4524, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 4524, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4524, __pyx_L1_error)
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4524, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4524, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
    __pyx_t_7 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4524, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;
 4525:     else:
+4526:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_25 = NULL;
    __pyx_t_26 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_25)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_25);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_26 = 1;
      }
    }
    __pyx_t_27 = PyTuple_New(7+__pyx_t_26); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    if (__pyx_t_25) {
      __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_25); __pyx_t_25 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_27, 0+__pyx_t_26, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_27, 1+__pyx_t_26, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_27, 2+__pyx_t_26, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_27, 3+__pyx_t_26, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_27, 4+__pyx_t_26, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_27, 5+__pyx_t_26, __pyx_t_8);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_27, 6+__pyx_t_26, __pyx_int_1);
    __pyx_t_6 = 0;
    __pyx_t_5 = 0;
    __pyx_t_8 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
      PyObject* sequence = __pyx_t_1;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 4526, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_27 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_27 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_27);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4526, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_27 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4526, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4526, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_8)->tp_iternext;
      index = 0; __pyx_t_7 = __pyx_t_24(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_27 = __pyx_t_24(__pyx_t_8); if (unlikely(!__pyx_t_27)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_27);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_8), 2) < 0) __PYX_ERR(0, 4526, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 4526, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4526, __pyx_L1_error)
    if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4526, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4526, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
    __pyx_t_7 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_27);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4526, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_27));
    __pyx_t_27 = 0;
  }
  __pyx_L3:;
 4527: 
+4528:     if labelsorted == 1:
  __pyx_t_23 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_23) {
/* … */
  }
+4529:         X, Y = labelsort(n, X, Y)
    __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_26 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_27);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_27, function);
        __pyx_t_26 = 1;
      }
    }
    __pyx_t_5 = PyTuple_New(3+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, __pyx_t_7);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_26, ((PyObject *)__pyx_v_Y));
    __pyx_t_7 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
      PyObject* sequence = __pyx_t_1;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 4529, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_27 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_27 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_27 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4529, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4529, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4529, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_27 = __pyx_t_24(__pyx_t_7); if (unlikely(!__pyx_t_27)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_27);
      index = 1; __pyx_t_5 = __pyx_t_24(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_7), 2) < 0) __PYX_ERR(0, 4529, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 4529, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4529, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4529, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_27);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4529, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_27));
    __pyx_t_27 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_4 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4529, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 4530: 
+4531:     Iter = 1
  __pyx_v_Iter = 1;
+4532:     while True:
  while (1) {
 4533: 
+4534:         if seq == 1 or seq == 2 or seq == 3:
    switch (__pyx_v_seq) {
      case 1:
      case 2:
      case 3:
/* … */
      break;
      default:
+4535:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+4536:                 I[X[k], Y[k]] = k + 1
        __pyx_t_29 = __pyx_v_k;
        __pyx_t_30 = __pyx_v_k;
        __pyx_t_31 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_32 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_32, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+4537:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_33 = __pyx_v_k;
        __pyx_t_34 = 0;
        __pyx_t_35 = __pyx_v_k;
        __pyx_t_36 = __pyx_v_k;
        __pyx_t_37 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_38 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_39 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_col.diminfo[1].strides));
+4538:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_40 = __pyx_v_k;
        __pyx_t_41 = 1;
        __pyx_t_42 = __pyx_v_k;
        __pyx_t_43 = __pyx_v_k;
        __pyx_t_44 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_45 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_46 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_col.diminfo[1].strides));
+4539:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_47 = __pyx_v_k;
        __pyx_t_48 = 2;
        __pyx_t_49 = __pyx_v_k;
        __pyx_t_50 = __pyx_v_k;
        __pyx_t_51 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_52 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_53 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_52, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_col.diminfo[1].strides));
+4540:                 Theta[k] = Thetafunc(X[k], Y[k], k + 1, 1, 1)
        __pyx_t_54 = __pyx_v_k;
        __pyx_t_5 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4540, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_55 = __pyx_v_k;
        __pyx_t_27 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4540, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4540, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_v_Thetafunc);
        __pyx_t_8 = __pyx_v_Thetafunc; __pyx_t_6 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_8, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_25 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4540, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_26, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_26, __pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_26, __pyx_t_7);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_5 = 0;
        __pyx_t_27 = 0;
        __pyx_t_7 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4540, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 4540, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_57 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_56;
+4541:                 adotVal[k] = Adotfunc(X[k], Y[k], k + 1, Theta[k], 1)
        __pyx_t_58 = __pyx_v_k;
        __pyx_t_8 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4541, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_59 = __pyx_v_k;
        __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 4541, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4541, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_60 = __pyx_v_k;
        __pyx_t_27 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4541, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_INCREF(__pyx_v_Adotfunc);
        __pyx_t_5 = __pyx_v_Adotfunc; __pyx_t_6 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_61 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4541, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_61, 0+__pyx_t_26, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_61, 1+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_61, 2+__pyx_t_26, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_61, 3+__pyx_t_26, __pyx_t_27);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_61, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_8 = 0;
        __pyx_t_25 = 0;
        __pyx_t_7 = 0;
        __pyx_t_27 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_61, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4541, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 4541, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_62 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_56;
      }
 4542:         else:
+4543:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+4544:                 I[X[k], Y[k]] = k + 1
        __pyx_t_63 = __pyx_v_k;
        __pyx_t_64 = __pyx_v_k;
        __pyx_t_65 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_66 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+4545:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_67 = __pyx_v_k;
        __pyx_t_68 = 0;
        __pyx_t_69 = __pyx_v_k;
        __pyx_t_70 = __pyx_v_k;
        __pyx_t_71 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_72 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_73 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_73, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_col.diminfo[1].strides));
+4546:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_74 = __pyx_v_k;
        __pyx_t_75 = 1;
        __pyx_t_76 = __pyx_v_k;
        __pyx_t_77 = __pyx_v_k;
        __pyx_t_78 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_79 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_80 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_80, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_col.diminfo[1].strides));
+4547:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_81 = __pyx_v_k;
        __pyx_t_82 = 2;
        __pyx_t_83 = __pyx_v_k;
        __pyx_t_84 = __pyx_v_k;
        __pyx_t_85 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_86 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_87 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_87, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_82, __pyx_pybuffernd_col.diminfo[1].strides));
+4548:                 adotVal[k] = Adotfunc(X[k], Y[k], k + 1, 0, 1)
        __pyx_t_88 = __pyx_v_k;
        __pyx_t_5 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_89 = __pyx_v_k;
        __pyx_t_61 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_INCREF(__pyx_v_Adotfunc);
        __pyx_t_7 = __pyx_v_Adotfunc; __pyx_t_25 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_25)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_25);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_8 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_25) {
          __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_25); __pyx_t_25 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_26, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_26, __pyx_t_27);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_26, __pyx_int_0);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_5 = 0;
        __pyx_t_61 = 0;
        __pyx_t_27 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 4548, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_90 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_56;
+4549:                 Theta[k] = Thetafunc(X[k], Y[k], k + 1, 1, adotVal[k])
        __pyx_t_91 = __pyx_v_k;
        __pyx_t_7 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_92 = __pyx_v_k;
        __pyx_t_8 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_93 = __pyx_v_k;
        __pyx_t_61 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_INCREF(__pyx_v_Thetafunc);
        __pyx_t_5 = __pyx_v_Thetafunc; __pyx_t_25 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_25)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_25);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_6 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__pyx_t_25) {
          __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_25); __pyx_t_25 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_26, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_26, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_26, __pyx_t_27);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_26, __pyx_t_61);
        __pyx_t_7 = 0;
        __pyx_t_8 = 0;
        __pyx_t_27 = 0;
        __pyx_t_61 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 4549, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_94 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_56;
      }
      break;
    }
 4550: 
 4551: 
 4552: 
+4553:         showriteframe(sa, sf, fd, 0, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, 0, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
 4554: 
+4555:         countim = 0
    __pyx_v_countim = 0;
+4556:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4556, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_61 = PyTuple_New(1+1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4556, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_61, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_61, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4556, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4556, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 4556, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (!__pyx_t_23) break;
+4557:             countim = countim + 1
      __pyx_v_countim = (__pyx_v_countim + 1);
+4558:             adotValmax = 0
      __pyx_v_adotValmax = 0.0;
+4559:             for i in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_i = __pyx_t_28;
+4560:                 if a[i] == 1:
        __pyx_t_95 = __pyx_v_i;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_23) {
/* … */
        }
      }
+4561:                     tmp = adotVal[i]
          __pyx_t_96 = __pyx_v_i;
          __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_adotVal.diminfo[0].strides));
+4562:                     if tmp > adotValmax:
          __pyx_t_23 = ((__pyx_v_tmp > __pyx_v_adotValmax) != 0);
          if (__pyx_t_23) {
/* … */
          }
+4563:                         adotValmax = tmp
            __pyx_v_adotValmax = __pyx_v_tmp;
 4564: 
+4565:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+4566:                 if a[k] == 1:
        __pyx_t_97 = __pyx_v_k;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_23) {
/* … */
        }
      }
+4567:                     a[k] = 0
          __pyx_t_98 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+4568:                     xo = X[k]
          __pyx_t_99 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_X.diminfo[0].strides));
+4569:                     yo = Y[k]
          __pyx_t_100 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_100, __pyx_pybuffernd_Y.diminfo[0].strides));
+4570:                     Io = I[xo, yo]
          __pyx_t_101 = __pyx_v_xo;
          __pyx_t_102 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides));
+4571:                     theta = Theta[k]
          __pyx_t_103 = __pyx_v_k;
          __pyx_v_theta = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_Theta.diminfo[0].strides));
 4572: 
+4573:                     c = math.cos(theta)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4573, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_61 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_cos); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4573, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4573, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_5 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_61))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_61);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_61);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_61, function);
            }
          }
          if (!__pyx_t_5) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_61, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4573, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_6);
          } else {
            __pyx_t_27 = PyTuple_New(1+1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4573, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_5); __pyx_t_5 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_27, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_27, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4573, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          }
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 4573, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_c = __pyx_t_3;
+4574:                     s = -math.sin(theta)
          __pyx_t_61 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4574, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_61, __pyx_n_s_sin); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4574, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_61 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4574, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_27);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_27, function);
            }
          }
          if (!__pyx_t_1) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_t_61); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4574, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
            __Pyx_GOTREF(__pyx_t_6);
          } else {
            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4574, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
            __Pyx_GIVEREF(__pyx_t_61);
            PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_61);
            __pyx_t_61 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4574, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          }
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_27 = PyNumber_Negative(__pyx_t_6); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4574, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_27); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 4574, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_v_s = __pyx_t_3;
 4575: 
+4576:                     dr = adotVal[k] / adotValmax
          __pyx_t_104 = __pyx_v_k;
          __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_adotVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_adotValmax));
+4577:                     MAJ[k] = MAJ[k] + dr
          __pyx_t_105 = __pyx_v_k;
          __pyx_t_106 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + __pyx_v_dr);
+4578:                     MIN = MAJ[k] / R
          __pyx_t_107 = __pyx_v_k;
          __pyx_v_MIN = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_MAJ.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_R));
+4579:                     MAJceil = math.ceil(MAJ[k])
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4579, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4579, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_108 = __pyx_v_k;
          __pyx_t_6 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_MAJ.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4579, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_61 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_61 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_61)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_61);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
            }
          }
          if (!__pyx_t_61) {
            __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4579, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_27);
          } else {
            __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4579, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_61); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_61); __pyx_t_61 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4579, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_109 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_27); if (unlikely((__pyx_t_109 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4579, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_v_MAJceil = __pyx_t_109;
+4580:                     MINceil = math.ceil(MIN)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4580, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ceil); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4580, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = PyFloat_FromDouble(__pyx_v_MIN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4580, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4580, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_GOTREF(__pyx_t_27);
          } else {
            __pyx_t_61 = PyTuple_New(1+1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4580, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_61);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_61, 0+1, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_61, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4580, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_109 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_27); if (unlikely((__pyx_t_109 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4580, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_v_MINceil = __pyx_t_109;
 4581: 
 4582: 
+4583:                     delX = math.ceil(math.sqrt((MAJ[k] * c) ** 2 + (MIN * s) ** 2))
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4583, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_61 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4583, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4583, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4583, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_109 = __pyx_v_k;
          __pyx_t_5 = PyFloat_FromDouble((pow(((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_MAJ.diminfo[0].strides)) * __pyx_v_c), 2.0) + powf((__pyx_v_MIN * __pyx_v_s), 2.0))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4583, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_8) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4583, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4583, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4583, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_61))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_61);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_61);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_61, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_61, __pyx_t_1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4583, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_27);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4583, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_7, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4583, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_110 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_27); if (unlikely((__pyx_t_110 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4583, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_v_delX = __pyx_t_110;
+4584:                     delY = math.ceil(math.sqrt((MAJ[k] * s) ** 2 + (MIN * c) ** 2))
          __pyx_t_61 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4584, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_61, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4584, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4584, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4584, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_110 = __pyx_v_k;
          __pyx_t_1 = PyFloat_FromDouble((pow(((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_MAJ.diminfo[0].strides)) * __pyx_v_s), 2.0) + powf((__pyx_v_MIN * __pyx_v_c), 2.0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4584, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_5 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_5) {
            __pyx_t_61 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4584, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_61);
          } else {
            __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4584, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_61 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4584, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_61);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_61); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4584, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
            __Pyx_GOTREF(__pyx_t_27);
          } else {
            __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4584, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_61);
            PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_61);
            __pyx_t_61 = 0;
            __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4584, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_111 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_27); if (unlikely((__pyx_t_111 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4584, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_v_delY = __pyx_t_111;
+4585:                     red = col[k, 0]
          __pyx_t_111 = __pyx_v_k;
          __pyx_t_112 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_col.diminfo[1].strides));
+4586:                     green = col[k, 1]
          __pyx_t_113 = __pyx_v_k;
          __pyx_t_114 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_col.diminfo[1].strides));
+4587:                     blue = col[k, 2]
          __pyx_t_115 = __pyx_v_k;
          __pyx_t_116 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_col.diminfo[1].strides));
 4588: 
 4589:                     # OUTWARD
 4590: 
+4591:                     for deli in range(0, delX + 1):
          __pyx_t_117 = (__pyx_v_delX + 1);
          for (__pyx_t_118 = 0; __pyx_t_118 < __pyx_t_117; __pyx_t_118+=1) {
            __pyx_v_deli = __pyx_t_118;
+4592:                         for delj in range(0, delY + 1):
            __pyx_t_119 = (__pyx_v_delY + 1);
            for (__pyx_t_120 = 0; __pyx_t_120 < __pyx_t_119; __pyx_t_120+=1) {
              __pyx_v_delj = __pyx_t_120;
+4593:                             if ((deli * c - delj * s) / MAJ[k]) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_121 = __pyx_v_k;
              __pyx_t_23 = (((pow((((__pyx_t_5numpy_float64_t)((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
 4594: 
+4595:                                 i, j = xo + deli, yo + delj
                __pyx_t_122 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_123 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_122;
                __pyx_v_j = __pyx_t_123;
+4596:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_124 = (0 <= __pyx_v_i);
                if (__pyx_t_124) {
                  __pyx_t_124 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_125 = (__pyx_t_124 != 0);
                if (__pyx_t_125) {
                } else {
                  __pyx_t_23 = __pyx_t_125;
                  goto __pyx_L32_bool_binop_done;
                }
                __pyx_t_125 = (0 <= __pyx_v_j);
                if (__pyx_t_125) {
                  __pyx_t_125 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_124 = (__pyx_t_125 != 0);
                __pyx_t_23 = __pyx_t_124;
                __pyx_L32_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4597:                                     if I[i, j] == 0:
                  __pyx_t_123 = __pyx_v_i;
                  __pyx_t_122 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4598:                                         for dum in range(1):
                    for (__pyx_t_126 = 0; __pyx_t_126 < 1; __pyx_t_126+=1) {
                      __pyx_v_dum = __pyx_t_126;
 4599: 
+4600:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4601:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_127 = (__pyx_v_i - 1);
                        __pyx_t_128 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4602:                                                     I[i, j] = Io
                          __pyx_t_129 = __pyx_v_i;
                          __pyx_t_130 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4603:                                                     Col[i, j, 2] = red
                          __pyx_t_131 = __pyx_v_i;
                          __pyx_t_132 = __pyx_v_j;
                          __pyx_t_133 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4604:                                                     Col[i, j, 1] = green
                          __pyx_t_134 = __pyx_v_i;
                          __pyx_t_135 = __pyx_v_j;
                          __pyx_t_136 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_135, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_136, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4605:                                                     Col[i, j, 0] = blue
                          __pyx_t_137 = __pyx_v_i;
                          __pyx_t_138 = __pyx_v_j;
                          __pyx_t_139 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4606:                                                     a[k] = 1
                          __pyx_t_140 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4607:                                                     break
                          goto __pyx_L36_break;
+4608:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4609:                                                 if I[i, j - 1] == Io:
                        __pyx_t_141 = __pyx_v_i;
                        __pyx_t_142 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_141, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_142, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4610:                                                     I[i, j] = Io
                          __pyx_t_143 = __pyx_v_i;
                          __pyx_t_144 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4611:                                                     Col[i, j, 2] = red
                          __pyx_t_145 = __pyx_v_i;
                          __pyx_t_146 = __pyx_v_j;
                          __pyx_t_147 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4612:                                                     Col[i, j, 1] = green
                          __pyx_t_148 = __pyx_v_i;
                          __pyx_t_149 = __pyx_v_j;
                          __pyx_t_150 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_149, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_150, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4613:                                                     Col[i, j, 0] = blue
                          __pyx_t_151 = __pyx_v_i;
                          __pyx_t_152 = __pyx_v_j;
                          __pyx_t_153 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_153, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4614:                                                     a[k] = 1
                          __pyx_t_154 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4615:                                                     break
                          goto __pyx_L36_break;
 4616: 
+4617:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4618:                                                 if I[i, j + 1] == Io:
                        __pyx_t_155 = __pyx_v_i;
                        __pyx_t_156 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4619:                                                     I[i, j] = Io
                          __pyx_t_157 = __pyx_v_i;
                          __pyx_t_158 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4620:                                                     Col[i, j, 2] = red
                          __pyx_t_159 = __pyx_v_i;
                          __pyx_t_160 = __pyx_v_j;
                          __pyx_t_161 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4621:                                                     Col[i, j, 1] = green
                          __pyx_t_162 = __pyx_v_i;
                          __pyx_t_163 = __pyx_v_j;
                          __pyx_t_164 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4622:                                                     Col[i, j, 0] = blue
                          __pyx_t_165 = __pyx_v_i;
                          __pyx_t_166 = __pyx_v_j;
                          __pyx_t_167 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4623:                                                     a[k] = 1
                          __pyx_t_168 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4624:                                                     break
                          goto __pyx_L36_break;
 4625: 
 4626: 
+4627:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L36_break:;
+4628:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_169 = (__pyx_v_i + 1);
                        __pyx_t_170 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_169, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_170, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4629:                                                     I[i, j] = Io
                          __pyx_t_171 = __pyx_v_i;
                          __pyx_t_172 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_172, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4630:                                                     Col[i, j, 2] = red
                          __pyx_t_173 = __pyx_v_i;
                          __pyx_t_174 = __pyx_v_j;
                          __pyx_t_175 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_173, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_174, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_175, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4631:                                                     Col[i, j, 1] = green
                          __pyx_t_176 = __pyx_v_i;
                          __pyx_t_177 = __pyx_v_j;
                          __pyx_t_178 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_176, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_177, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_178, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4632:                                                     Col[i, j, 0] = blue
                          __pyx_t_179 = __pyx_v_i;
                          __pyx_t_180 = __pyx_v_j;
                          __pyx_t_181 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_180, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_181, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4633:                                                     a[k] = 1
                          __pyx_t_182 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4634:                                                     break
                          goto __pyx_L36_break;
 4635: 
 4636: 
+4637:                                 i, j = xo - deli, yo - delj
                __pyx_t_126 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_183 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_126;
                __pyx_v_j = __pyx_t_183;
+4638:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_124 = (0 <= __pyx_v_i);
                if (__pyx_t_124) {
                  __pyx_t_124 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_125 = (__pyx_t_124 != 0);
                if (__pyx_t_125) {
                } else {
                  __pyx_t_23 = __pyx_t_125;
                  goto __pyx_L46_bool_binop_done;
                }
                __pyx_t_125 = (0 <= __pyx_v_j);
                if (__pyx_t_125) {
                  __pyx_t_125 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_124 = (__pyx_t_125 != 0);
                __pyx_t_23 = __pyx_t_124;
                __pyx_L46_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4639:                                     if I[i, j] == 0:
                  __pyx_t_183 = __pyx_v_i;
                  __pyx_t_126 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_183, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_126, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4640:                                         for dum in range(1):
                    for (__pyx_t_184 = 0; __pyx_t_184 < 1; __pyx_t_184+=1) {
                      __pyx_v_dum = __pyx_t_184;
 4641: 
+4642:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4643:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_185 = (__pyx_v_i - 1);
                        __pyx_t_186 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_185, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_186, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4644:                                                     I[i, j] = Io
                          __pyx_t_187 = __pyx_v_i;
                          __pyx_t_188 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_188, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4645:                                                     Col[i, j, 2] = red
                          __pyx_t_189 = __pyx_v_i;
                          __pyx_t_190 = __pyx_v_j;
                          __pyx_t_191 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_190, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_191, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4646:                                                     Col[i, j, 1] = green
                          __pyx_t_192 = __pyx_v_i;
                          __pyx_t_193 = __pyx_v_j;
                          __pyx_t_194 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_192, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_193, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_194, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4647:                                                     Col[i, j, 0] = blue
                          __pyx_t_195 = __pyx_v_i;
                          __pyx_t_196 = __pyx_v_j;
                          __pyx_t_197 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_195, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_196, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_197, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4648:                                                     a[k] = 1
                          __pyx_t_198 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4649:                                                     break
                          goto __pyx_L50_break;
+4650:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4651:                                                 if I[i, j - 1] == Io:
                        __pyx_t_199 = __pyx_v_i;
                        __pyx_t_200 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_199, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_200, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4652:                                                     I[i, j] = Io
                          __pyx_t_201 = __pyx_v_i;
                          __pyx_t_202 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_201, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_202, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4653:                                                     Col[i, j, 2] = red
                          __pyx_t_203 = __pyx_v_i;
                          __pyx_t_204 = __pyx_v_j;
                          __pyx_t_205 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_204, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_205, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4654:                                                     Col[i, j, 1] = green
                          __pyx_t_206 = __pyx_v_i;
                          __pyx_t_207 = __pyx_v_j;
                          __pyx_t_208 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_206, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_207, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_208, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4655:                                                     Col[i, j, 0] = blue
                          __pyx_t_209 = __pyx_v_i;
                          __pyx_t_210 = __pyx_v_j;
                          __pyx_t_211 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_209, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_210, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_211, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4656:                                                     a[k] = 1
                          __pyx_t_212 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_212, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4657:                                                     break
                          goto __pyx_L50_break;
 4658: 
+4659:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4660:                                                 if I[i, j + 1] == Io:
                        __pyx_t_213 = __pyx_v_i;
                        __pyx_t_214 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_213, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_214, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4661:                                                     I[i, j] = Io
                          __pyx_t_215 = __pyx_v_i;
                          __pyx_t_216 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_215, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_216, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4662:                                                     Col[i, j, 2] = red
                          __pyx_t_217 = __pyx_v_i;
                          __pyx_t_218 = __pyx_v_j;
                          __pyx_t_219 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_217, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_218, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_219, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4663:                                                     Col[i, j, 1] = green
                          __pyx_t_220 = __pyx_v_i;
                          __pyx_t_221 = __pyx_v_j;
                          __pyx_t_222 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_220, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_221, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_222, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4664:                                                     Col[i, j, 0] = blue
                          __pyx_t_223 = __pyx_v_i;
                          __pyx_t_224 = __pyx_v_j;
                          __pyx_t_225 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_223, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_224, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_225, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4665:                                                     a[k] = 1
                          __pyx_t_226 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_226, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4666:                                                     break
                          goto __pyx_L50_break;
 4667: 
 4668: 
+4669:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L50_break:;
+4670:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_227 = (__pyx_v_i + 1);
                        __pyx_t_228 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_227, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_228, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4671:                                                     I[i, j] = Io
                          __pyx_t_229 = __pyx_v_i;
                          __pyx_t_230 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_229, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_230, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4672:                                                     Col[i, j, 2] = red
                          __pyx_t_231 = __pyx_v_i;
                          __pyx_t_232 = __pyx_v_j;
                          __pyx_t_233 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_232, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_233, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4673:                                                     Col[i, j, 1] = green
                          __pyx_t_234 = __pyx_v_i;
                          __pyx_t_235 = __pyx_v_j;
                          __pyx_t_236 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_234, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_235, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_236, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4674:                                                     Col[i, j, 0] = blue
                          __pyx_t_237 = __pyx_v_i;
                          __pyx_t_238 = __pyx_v_j;
                          __pyx_t_239 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_237, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_238, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_239, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4675:                                                     a[k] = 1
                          __pyx_t_240 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_240, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4676:                                                     break
                          goto __pyx_L50_break;
 4677: 
 4678: 
+4679:                     for deli in range(0, -delX - 1, -1):
          __pyx_t_117 = ((-__pyx_v_delX) - 1);
          for (__pyx_t_118 = 0; __pyx_t_118 > __pyx_t_117; __pyx_t_118-=1) {
            __pyx_v_deli = __pyx_t_118;
+4680:                         for delj in range(0, delY + 1):
            __pyx_t_119 = (__pyx_v_delY + 1);
            for (__pyx_t_120 = 0; __pyx_t_120 < __pyx_t_119; __pyx_t_120+=1) {
              __pyx_v_delj = __pyx_t_120;
+4681:                             if ((deli * c - delj * s) / MAJ[k]) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_184 = __pyx_v_k;
              __pyx_t_23 = (((pow((((__pyx_t_5numpy_float64_t)((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
 4682: 
+4683:                                 i, j = xo + deli, yo + delj
                __pyx_t_241 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_242 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_241;
                __pyx_v_j = __pyx_t_242;
+4684:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_124 = (0 <= __pyx_v_i);
                if (__pyx_t_124) {
                  __pyx_t_124 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_125 = (__pyx_t_124 != 0);
                if (__pyx_t_125) {
                } else {
                  __pyx_t_23 = __pyx_t_125;
                  goto __pyx_L65_bool_binop_done;
                }
                __pyx_t_125 = (0 <= __pyx_v_j);
                if (__pyx_t_125) {
                  __pyx_t_125 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_124 = (__pyx_t_125 != 0);
                __pyx_t_23 = __pyx_t_124;
                __pyx_L65_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4685:                                     if I[i, j] == 0:
                  __pyx_t_242 = __pyx_v_i;
                  __pyx_t_241 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_242, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_241, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4686:                                         for dum in range(1):
                    for (__pyx_t_243 = 0; __pyx_t_243 < 1; __pyx_t_243+=1) {
                      __pyx_v_dum = __pyx_t_243;
 4687: 
+4688:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4689:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_244 = (__pyx_v_i - 1);
                        __pyx_t_245 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_244, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_245, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4690:                                                     I[i, j] = Io
                          __pyx_t_246 = __pyx_v_i;
                          __pyx_t_247 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_246, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_247, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4691:                                                     Col[i, j, 2] = red
                          __pyx_t_248 = __pyx_v_i;
                          __pyx_t_249 = __pyx_v_j;
                          __pyx_t_250 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_248, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_249, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_250, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4692:                                                     Col[i, j, 1] = green
                          __pyx_t_251 = __pyx_v_i;
                          __pyx_t_252 = __pyx_v_j;
                          __pyx_t_253 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_251, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_252, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_253, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4693:                                                     Col[i, j, 0] = blue
                          __pyx_t_254 = __pyx_v_i;
                          __pyx_t_255 = __pyx_v_j;
                          __pyx_t_256 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_254, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_255, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_256, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4694:                                                     a[k] = 1
                          __pyx_t_257 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_257, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4695:                                                     break
                          goto __pyx_L69_break;
+4696:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4697:                                                 if I[i, j - 1] == Io:
                        __pyx_t_258 = __pyx_v_i;
                        __pyx_t_259 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_258, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_259, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4698:                                                     I[i, j] = Io
                          __pyx_t_260 = __pyx_v_i;
                          __pyx_t_261 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_260, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_261, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4699:                                                     Col[i, j, 2] = red
                          __pyx_t_262 = __pyx_v_i;
                          __pyx_t_263 = __pyx_v_j;
                          __pyx_t_264 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_262, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_263, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_264, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4700:                                                     Col[i, j, 1] = green
                          __pyx_t_265 = __pyx_v_i;
                          __pyx_t_266 = __pyx_v_j;
                          __pyx_t_267 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_265, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_266, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_267, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4701:                                                     Col[i, j, 0] = blue
                          __pyx_t_268 = __pyx_v_i;
                          __pyx_t_269 = __pyx_v_j;
                          __pyx_t_270 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_268, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_269, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_270, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4702:                                                     a[k] = 1
                          __pyx_t_271 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_271, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4703:                                                     break
                          goto __pyx_L69_break;
 4704: 
+4705:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4706:                                                 if I[i, j + 1] == Io:
                        __pyx_t_272 = __pyx_v_i;
                        __pyx_t_273 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_272, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_273, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4707:                                                     I[i, j] = Io
                          __pyx_t_274 = __pyx_v_i;
                          __pyx_t_275 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_274, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_275, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4708:                                                     Col[i, j, 2] = red
                          __pyx_t_276 = __pyx_v_i;
                          __pyx_t_277 = __pyx_v_j;
                          __pyx_t_278 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_276, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_277, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_278, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4709:                                                     Col[i, j, 1] = green
                          __pyx_t_279 = __pyx_v_i;
                          __pyx_t_280 = __pyx_v_j;
                          __pyx_t_281 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_279, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_280, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_281, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4710:                                                     Col[i, j, 0] = blue
                          __pyx_t_282 = __pyx_v_i;
                          __pyx_t_283 = __pyx_v_j;
                          __pyx_t_284 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_282, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_283, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_284, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4711:                                                     a[k] = 1
                          __pyx_t_285 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_285, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4712:                                                     break
                          goto __pyx_L69_break;
 4713: 
 4714: 
+4715:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L69_break:;
+4716:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_286 = (__pyx_v_i + 1);
                        __pyx_t_287 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_286, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_287, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4717:                                                     I[i, j] = Io
                          __pyx_t_288 = __pyx_v_i;
                          __pyx_t_289 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_288, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_289, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4718:                                                     Col[i, j, 2] = red
                          __pyx_t_290 = __pyx_v_i;
                          __pyx_t_291 = __pyx_v_j;
                          __pyx_t_292 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_290, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_291, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_292, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4719:                                                     Col[i, j, 1] = green
                          __pyx_t_293 = __pyx_v_i;
                          __pyx_t_294 = __pyx_v_j;
                          __pyx_t_295 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_293, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_294, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_295, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4720:                                                     Col[i, j, 0] = blue
                          __pyx_t_296 = __pyx_v_i;
                          __pyx_t_297 = __pyx_v_j;
                          __pyx_t_298 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_296, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_297, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_298, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4721:                                                     a[k] = 1
                          __pyx_t_299 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_299, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4722:                                                     break
                          goto __pyx_L69_break;
 4723: 
 4724: 
+4725:                                 i, j = xo - deli, yo - delj
                __pyx_t_243 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_300 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_243;
                __pyx_v_j = __pyx_t_300;
+4726:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_124 = (0 <= __pyx_v_i);
                if (__pyx_t_124) {
                  __pyx_t_124 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_125 = (__pyx_t_124 != 0);
                if (__pyx_t_125) {
                } else {
                  __pyx_t_23 = __pyx_t_125;
                  goto __pyx_L79_bool_binop_done;
                }
                __pyx_t_125 = (0 <= __pyx_v_j);
                if (__pyx_t_125) {
                  __pyx_t_125 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_124 = (__pyx_t_125 != 0);
                __pyx_t_23 = __pyx_t_124;
                __pyx_L79_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4727:                                     if I[i, j] == 0:
                  __pyx_t_300 = __pyx_v_i;
                  __pyx_t_243 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_300, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_243, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4728:                                         for dum in range(1):
                    for (__pyx_t_301 = 0; __pyx_t_301 < 1; __pyx_t_301+=1) {
                      __pyx_v_dum = __pyx_t_301;
 4729: 
+4730:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4731:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_302 = (__pyx_v_i - 1);
                        __pyx_t_303 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_302, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_303, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4732:                                                     I[i, j] = Io
                          __pyx_t_304 = __pyx_v_i;
                          __pyx_t_305 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_304, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_305, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4733:                                                     Col[i, j, 2] = red
                          __pyx_t_306 = __pyx_v_i;
                          __pyx_t_307 = __pyx_v_j;
                          __pyx_t_308 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_306, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_307, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_308, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4734:                                                     Col[i, j, 1] = green
                          __pyx_t_309 = __pyx_v_i;
                          __pyx_t_310 = __pyx_v_j;
                          __pyx_t_311 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_309, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_310, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_311, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4735:                                                     Col[i, j, 0] = blue
                          __pyx_t_312 = __pyx_v_i;
                          __pyx_t_313 = __pyx_v_j;
                          __pyx_t_314 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_312, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_313, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_314, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4736:                                                     a[k] = 1
                          __pyx_t_315 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_315, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4737:                                                     break
                          goto __pyx_L83_break;
+4738:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4739:                                                 if I[i, j - 1] == Io:
                        __pyx_t_316 = __pyx_v_i;
                        __pyx_t_317 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_316, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_317, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4740:                                                     I[i, j] = Io
                          __pyx_t_318 = __pyx_v_i;
                          __pyx_t_319 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_318, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_319, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4741:                                                     Col[i, j, 2] = red
                          __pyx_t_320 = __pyx_v_i;
                          __pyx_t_321 = __pyx_v_j;
                          __pyx_t_322 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_320, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_321, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_322, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4742:                                                     Col[i, j, 1] = green
                          __pyx_t_323 = __pyx_v_i;
                          __pyx_t_324 = __pyx_v_j;
                          __pyx_t_325 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_323, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_324, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_325, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4743:                                                     Col[i, j, 0] = blue
                          __pyx_t_326 = __pyx_v_i;
                          __pyx_t_327 = __pyx_v_j;
                          __pyx_t_328 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_326, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_327, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_328, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4744:                                                     a[k] = 1
                          __pyx_t_329 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_329, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4745:                                                     break
                          goto __pyx_L83_break;
 4746: 
+4747:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4748:                                                 if I[i, j + 1] == Io:
                        __pyx_t_330 = __pyx_v_i;
                        __pyx_t_331 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_330, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_331, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4749:                                                     I[i, j] = Io
                          __pyx_t_332 = __pyx_v_i;
                          __pyx_t_333 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_332, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_333, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4750:                                                     Col[i, j, 2] = red
                          __pyx_t_334 = __pyx_v_i;
                          __pyx_t_335 = __pyx_v_j;
                          __pyx_t_336 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_334, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_335, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_336, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4751:                                                     Col[i, j, 1] = green
                          __pyx_t_337 = __pyx_v_i;
                          __pyx_t_338 = __pyx_v_j;
                          __pyx_t_339 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_337, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_338, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_339, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4752:                                                     Col[i, j, 0] = blue
                          __pyx_t_340 = __pyx_v_i;
                          __pyx_t_341 = __pyx_v_j;
                          __pyx_t_342 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_340, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_341, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_342, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4753:                                                     a[k] = 1
                          __pyx_t_343 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_343, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4754:                                                     break
                          goto __pyx_L83_break;
 4755: 
 4756: 
+4757:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L83_break:;
+4758:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_344 = (__pyx_v_i + 1);
                        __pyx_t_345 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_344, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_345, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4759:                                                     I[i, j] = Io
                          __pyx_t_346 = __pyx_v_i;
                          __pyx_t_347 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_346, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_347, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4760:                                                     Col[i, j, 2] = red
                          __pyx_t_348 = __pyx_v_i;
                          __pyx_t_349 = __pyx_v_j;
                          __pyx_t_350 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_348, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_349, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_350, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4761:                                                     Col[i, j, 1] = green
                          __pyx_t_351 = __pyx_v_i;
                          __pyx_t_352 = __pyx_v_j;
                          __pyx_t_353 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_351, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_352, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_353, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4762:                                                     Col[i, j, 0] = blue
                          __pyx_t_354 = __pyx_v_i;
                          __pyx_t_355 = __pyx_v_j;
                          __pyx_t_356 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_354, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_355, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_356, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4763:                                                     a[k] = 1
                          __pyx_t_357 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_357, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4764:                                                     break
                          goto __pyx_L83_break;
 4765: 
 4766: 
 4767: 
 4768:                     # INWARD
 4769: 
+4770:                     for deli in range(delX, -1, -1):
          for (__pyx_t_117 = __pyx_v_delX; __pyx_t_117 > -1L; __pyx_t_117-=1) {
            __pyx_v_deli = __pyx_t_117;
+4771:                         for delj in range(0, delY + 1):
            __pyx_t_118 = (__pyx_v_delY + 1);
            for (__pyx_t_119 = 0; __pyx_t_119 < __pyx_t_118; __pyx_t_119+=1) {
              __pyx_v_delj = __pyx_t_119;
+4772:                             if ((deli * c - delj * s) / MAJ[k]) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_120 = __pyx_v_k;
              __pyx_t_23 = (((pow((((__pyx_t_5numpy_float64_t)((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
 4773: 
+4774:                                 i, j = xo + deli, yo + delj
                __pyx_t_301 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_358 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_301;
                __pyx_v_j = __pyx_t_358;
+4775:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_124 = (0 <= __pyx_v_i);
                if (__pyx_t_124) {
                  __pyx_t_124 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_125 = (__pyx_t_124 != 0);
                if (__pyx_t_125) {
                } else {
                  __pyx_t_23 = __pyx_t_125;
                  goto __pyx_L98_bool_binop_done;
                }
                __pyx_t_125 = (0 <= __pyx_v_j);
                if (__pyx_t_125) {
                  __pyx_t_125 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_124 = (__pyx_t_125 != 0);
                __pyx_t_23 = __pyx_t_124;
                __pyx_L98_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4776:                                     if I[i, j] == 0:
                  __pyx_t_358 = __pyx_v_i;
                  __pyx_t_301 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_358, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_301, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4777:                                         for dum in range(1):
                    for (__pyx_t_359 = 0; __pyx_t_359 < 1; __pyx_t_359+=1) {
                      __pyx_v_dum = __pyx_t_359;
 4778: 
+4779:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4780:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_360 = (__pyx_v_i - 1);
                        __pyx_t_361 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_360, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_361, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4781:                                                     I[i, j] = Io
                          __pyx_t_362 = __pyx_v_i;
                          __pyx_t_363 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_362, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_363, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4782:                                                     Col[i, j, 2] = red
                          __pyx_t_364 = __pyx_v_i;
                          __pyx_t_365 = __pyx_v_j;
                          __pyx_t_366 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_364, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_365, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_366, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4783:                                                     Col[i, j, 1] = green
                          __pyx_t_367 = __pyx_v_i;
                          __pyx_t_368 = __pyx_v_j;
                          __pyx_t_369 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_367, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_368, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_369, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4784:                                                     Col[i, j, 0] = blue
                          __pyx_t_370 = __pyx_v_i;
                          __pyx_t_371 = __pyx_v_j;
                          __pyx_t_372 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_370, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_371, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_372, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4785:                                                     a[k] = 1
                          __pyx_t_373 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_373, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4786:                                                     break
                          goto __pyx_L102_break;
+4787:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4788:                                                 if I[i, j - 1] == Io:
                        __pyx_t_374 = __pyx_v_i;
                        __pyx_t_375 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_374, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_375, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4789:                                                     I[i, j] = Io
                          __pyx_t_376 = __pyx_v_i;
                          __pyx_t_377 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_376, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_377, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4790:                                                     Col[i, j, 2] = red
                          __pyx_t_378 = __pyx_v_i;
                          __pyx_t_379 = __pyx_v_j;
                          __pyx_t_380 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_378, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_379, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_380, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4791:                                                     Col[i, j, 1] = green
                          __pyx_t_381 = __pyx_v_i;
                          __pyx_t_382 = __pyx_v_j;
                          __pyx_t_383 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_381, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_382, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_383, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4792:                                                     Col[i, j, 0] = blue
                          __pyx_t_384 = __pyx_v_i;
                          __pyx_t_385 = __pyx_v_j;
                          __pyx_t_386 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_384, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_385, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_386, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4793:                                                     a[k] = 1
                          __pyx_t_387 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_387, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4794:                                                     break
                          goto __pyx_L102_break;
 4795: 
+4796:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4797:                                                 if I[i, j + 1] == Io:
                        __pyx_t_388 = __pyx_v_i;
                        __pyx_t_389 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_388, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_389, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4798:                                                     I[i, j] = Io
                          __pyx_t_390 = __pyx_v_i;
                          __pyx_t_391 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_390, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_391, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4799:                                                     Col[i, j, 2] = red
                          __pyx_t_392 = __pyx_v_i;
                          __pyx_t_393 = __pyx_v_j;
                          __pyx_t_394 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_392, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_393, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_394, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4800:                                                     Col[i, j, 1] = green
                          __pyx_t_395 = __pyx_v_i;
                          __pyx_t_396 = __pyx_v_j;
                          __pyx_t_397 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_395, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_396, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_397, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4801:                                                     Col[i, j, 0] = blue
                          __pyx_t_398 = __pyx_v_i;
                          __pyx_t_399 = __pyx_v_j;
                          __pyx_t_400 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_398, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_399, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_400, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4802:                                                     a[k] = 1
                          __pyx_t_401 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_401, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4803:                                                     break
                          goto __pyx_L102_break;
 4804: 
 4805: 
+4806:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L102_break:;
+4807:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_402 = (__pyx_v_i + 1);
                        __pyx_t_403 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_402, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_403, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4808:                                                     I[i, j] = Io
                          __pyx_t_404 = __pyx_v_i;
                          __pyx_t_405 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_404, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_405, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4809:                                                     Col[i, j, 2] = red
                          __pyx_t_406 = __pyx_v_i;
                          __pyx_t_407 = __pyx_v_j;
                          __pyx_t_408 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_406, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_407, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_408, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4810:                                                     Col[i, j, 1] = green
                          __pyx_t_409 = __pyx_v_i;
                          __pyx_t_410 = __pyx_v_j;
                          __pyx_t_411 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_409, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_410, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_411, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4811:                                                     Col[i, j, 0] = blue
                          __pyx_t_412 = __pyx_v_i;
                          __pyx_t_413 = __pyx_v_j;
                          __pyx_t_414 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_412, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_413, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_414, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4812:                                                     a[k] = 1
                          __pyx_t_415 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_415, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4813:                                                     break
                          goto __pyx_L102_break;
 4814: 
 4815: 
+4816:                                 i, j = xo - deli, yo - delj
                __pyx_t_359 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_416 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_359;
                __pyx_v_j = __pyx_t_416;
+4817:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_124 = (0 <= __pyx_v_i);
                if (__pyx_t_124) {
                  __pyx_t_124 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_125 = (__pyx_t_124 != 0);
                if (__pyx_t_125) {
                } else {
                  __pyx_t_23 = __pyx_t_125;
                  goto __pyx_L112_bool_binop_done;
                }
                __pyx_t_125 = (0 <= __pyx_v_j);
                if (__pyx_t_125) {
                  __pyx_t_125 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_124 = (__pyx_t_125 != 0);
                __pyx_t_23 = __pyx_t_124;
                __pyx_L112_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4818:                                     if I[i, j] == 0:
                  __pyx_t_416 = __pyx_v_i;
                  __pyx_t_359 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_416, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_359, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4819:                                         for dum in range(1):
                    for (__pyx_t_417 = 0; __pyx_t_417 < 1; __pyx_t_417+=1) {
                      __pyx_v_dum = __pyx_t_417;
 4820: 
+4821:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4822:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_418 = (__pyx_v_i - 1);
                        __pyx_t_419 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_418, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_419, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4823:                                                     I[i, j] = Io
                          __pyx_t_420 = __pyx_v_i;
                          __pyx_t_421 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_420, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_421, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4824:                                                     Col[i, j, 2] = red
                          __pyx_t_422 = __pyx_v_i;
                          __pyx_t_423 = __pyx_v_j;
                          __pyx_t_424 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_422, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_423, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_424, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4825:                                                     Col[i, j, 1] = green
                          __pyx_t_425 = __pyx_v_i;
                          __pyx_t_426 = __pyx_v_j;
                          __pyx_t_427 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_425, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_426, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_427, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4826:                                                     Col[i, j, 0] = blue
                          __pyx_t_428 = __pyx_v_i;
                          __pyx_t_429 = __pyx_v_j;
                          __pyx_t_430 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_428, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_429, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_430, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4827:                                                     a[k] = 1
                          __pyx_t_431 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_431, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4828:                                                     break
                          goto __pyx_L116_break;
+4829:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4830:                                                 if I[i, j - 1] == Io:
                        __pyx_t_432 = __pyx_v_i;
                        __pyx_t_433 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_432, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_433, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4831:                                                     I[i, j] = Io
                          __pyx_t_434 = __pyx_v_i;
                          __pyx_t_435 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_434, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_435, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4832:                                                     Col[i, j, 2] = red
                          __pyx_t_436 = __pyx_v_i;
                          __pyx_t_437 = __pyx_v_j;
                          __pyx_t_438 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_436, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_437, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_438, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4833:                                                     Col[i, j, 1] = green
                          __pyx_t_439 = __pyx_v_i;
                          __pyx_t_440 = __pyx_v_j;
                          __pyx_t_441 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_439, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_440, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_441, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4834:                                                     Col[i, j, 0] = blue
                          __pyx_t_442 = __pyx_v_i;
                          __pyx_t_443 = __pyx_v_j;
                          __pyx_t_444 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_442, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_443, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_444, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4835:                                                     a[k] = 1
                          __pyx_t_445 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_445, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4836:                                                     break
                          goto __pyx_L116_break;
 4837: 
+4838:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4839:                                                 if I[i, j + 1] == Io:
                        __pyx_t_446 = __pyx_v_i;
                        __pyx_t_447 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_446, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_447, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4840:                                                     I[i, j] = Io
                          __pyx_t_448 = __pyx_v_i;
                          __pyx_t_449 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_448, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_449, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4841:                                                     Col[i, j, 2] = red
                          __pyx_t_450 = __pyx_v_i;
                          __pyx_t_451 = __pyx_v_j;
                          __pyx_t_452 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_450, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_451, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_452, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4842:                                                     Col[i, j, 1] = green
                          __pyx_t_453 = __pyx_v_i;
                          __pyx_t_454 = __pyx_v_j;
                          __pyx_t_455 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_453, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_454, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_455, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4843:                                                     Col[i, j, 0] = blue
                          __pyx_t_456 = __pyx_v_i;
                          __pyx_t_457 = __pyx_v_j;
                          __pyx_t_458 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_456, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_457, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_458, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4844:                                                     a[k] = 1
                          __pyx_t_459 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_459, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4845:                                                     break
                          goto __pyx_L116_break;
 4846: 
 4847: 
+4848:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L116_break:;
+4849:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_460 = (__pyx_v_i + 1);
                        __pyx_t_461 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_460, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_461, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4850:                                                     I[i, j] = Io
                          __pyx_t_462 = __pyx_v_i;
                          __pyx_t_463 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_462, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_463, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4851:                                                     Col[i, j, 2] = red
                          __pyx_t_464 = __pyx_v_i;
                          __pyx_t_465 = __pyx_v_j;
                          __pyx_t_466 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_464, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_465, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_466, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4852:                                                     Col[i, j, 1] = green
                          __pyx_t_467 = __pyx_v_i;
                          __pyx_t_468 = __pyx_v_j;
                          __pyx_t_469 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_467, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_468, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_469, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4853:                                                     Col[i, j, 0] = blue
                          __pyx_t_470 = __pyx_v_i;
                          __pyx_t_471 = __pyx_v_j;
                          __pyx_t_472 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_470, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_471, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_472, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4854:                                                     a[k] = 1
                          __pyx_t_473 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_473, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4855:                                                     break
                          goto __pyx_L116_break;
 4856: 
 4857: 
+4858:                     for deli in range(-delX , 0):
          for (__pyx_t_117 = (-__pyx_v_delX); __pyx_t_117 < 0; __pyx_t_117+=1) {
            __pyx_v_deli = __pyx_t_117;
+4859:                         for delj in range(0, delY + 1):
            __pyx_t_118 = (__pyx_v_delY + 1);
            for (__pyx_t_119 = 0; __pyx_t_119 < __pyx_t_118; __pyx_t_119+=1) {
              __pyx_v_delj = __pyx_t_119;
+4860:                             if ((deli * c - delj * s) / MAJ[k]) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_417 = __pyx_v_k;
              __pyx_t_23 = (((pow((((__pyx_t_5numpy_float64_t)((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_417, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
 4861: 
+4862:                                 i, j = xo + deli, yo + delj
                __pyx_t_474 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_475 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_474;
                __pyx_v_j = __pyx_t_475;
+4863:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_124 = (0 <= __pyx_v_i);
                if (__pyx_t_124) {
                  __pyx_t_124 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_125 = (__pyx_t_124 != 0);
                if (__pyx_t_125) {
                } else {
                  __pyx_t_23 = __pyx_t_125;
                  goto __pyx_L131_bool_binop_done;
                }
                __pyx_t_125 = (0 <= __pyx_v_j);
                if (__pyx_t_125) {
                  __pyx_t_125 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_124 = (__pyx_t_125 != 0);
                __pyx_t_23 = __pyx_t_124;
                __pyx_L131_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4864:                                     if I[i, j] == 0:
                  __pyx_t_475 = __pyx_v_i;
                  __pyx_t_474 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_475, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_474, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4865:                                         for dum in range(1):
                    for (__pyx_t_476 = 0; __pyx_t_476 < 1; __pyx_t_476+=1) {
                      __pyx_v_dum = __pyx_t_476;
 4866: 
+4867:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4868:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_477 = (__pyx_v_i - 1);
                        __pyx_t_478 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_477, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_478, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4869:                                                     I[i, j] = Io
                          __pyx_t_479 = __pyx_v_i;
                          __pyx_t_480 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_479, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_480, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4870:                                                     Col[i, j, 2] = red
                          __pyx_t_481 = __pyx_v_i;
                          __pyx_t_482 = __pyx_v_j;
                          __pyx_t_483 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_481, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_482, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_483, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4871:                                                     Col[i, j, 1] = green
                          __pyx_t_484 = __pyx_v_i;
                          __pyx_t_485 = __pyx_v_j;
                          __pyx_t_486 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_484, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_485, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_486, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4872:                                                     Col[i, j, 0] = blue
                          __pyx_t_487 = __pyx_v_i;
                          __pyx_t_488 = __pyx_v_j;
                          __pyx_t_489 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_487, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_488, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_489, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4873:                                                     a[k] = 1
                          __pyx_t_490 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_490, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4874:                                                     break
                          goto __pyx_L135_break;
+4875:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4876:                                                 if I[i, j - 1] == Io:
                        __pyx_t_491 = __pyx_v_i;
                        __pyx_t_492 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_491, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_492, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4877:                                                     I[i, j] = Io
                          __pyx_t_493 = __pyx_v_i;
                          __pyx_t_494 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_493, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_494, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4878:                                                     Col[i, j, 2] = red
                          __pyx_t_495 = __pyx_v_i;
                          __pyx_t_496 = __pyx_v_j;
                          __pyx_t_497 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_495, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_496, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_497, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4879:                                                     Col[i, j, 1] = green
                          __pyx_t_498 = __pyx_v_i;
                          __pyx_t_499 = __pyx_v_j;
                          __pyx_t_500 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_498, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_499, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_500, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4880:                                                     Col[i, j, 0] = blue
                          __pyx_t_501 = __pyx_v_i;
                          __pyx_t_502 = __pyx_v_j;
                          __pyx_t_503 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_501, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_502, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_503, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4881:                                                     a[k] = 1
                          __pyx_t_504 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_504, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4882:                                                     break
                          goto __pyx_L135_break;
 4883: 
+4884:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4885:                                                 if I[i, j + 1] == Io:
                        __pyx_t_505 = __pyx_v_i;
                        __pyx_t_506 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_505, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_506, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4886:                                                     I[i, j] = Io
                          __pyx_t_507 = __pyx_v_i;
                          __pyx_t_508 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_507, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_508, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4887:                                                     Col[i, j, 2] = red
                          __pyx_t_509 = __pyx_v_i;
                          __pyx_t_510 = __pyx_v_j;
                          __pyx_t_511 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_509, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_510, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_511, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4888:                                                     Col[i, j, 1] = green
                          __pyx_t_512 = __pyx_v_i;
                          __pyx_t_513 = __pyx_v_j;
                          __pyx_t_514 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_512, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_513, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_514, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4889:                                                     Col[i, j, 0] = blue
                          __pyx_t_515 = __pyx_v_i;
                          __pyx_t_516 = __pyx_v_j;
                          __pyx_t_517 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_515, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_516, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_517, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4890:                                                     a[k] = 1
                          __pyx_t_518 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_518, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4891:                                                     break
                          goto __pyx_L135_break;
 4892: 
 4893: 
+4894:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L135_break:;
+4895:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_519 = (__pyx_v_i + 1);
                        __pyx_t_520 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_519, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_520, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4896:                                                     I[i, j] = Io
                          __pyx_t_521 = __pyx_v_i;
                          __pyx_t_522 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_521, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_522, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4897:                                                     Col[i, j, 2] = red
                          __pyx_t_523 = __pyx_v_i;
                          __pyx_t_524 = __pyx_v_j;
                          __pyx_t_525 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_523, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_524, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_525, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4898:                                                     Col[i, j, 1] = green
                          __pyx_t_526 = __pyx_v_i;
                          __pyx_t_527 = __pyx_v_j;
                          __pyx_t_528 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_526, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_527, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_528, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4899:                                                     Col[i, j, 0] = blue
                          __pyx_t_529 = __pyx_v_i;
                          __pyx_t_530 = __pyx_v_j;
                          __pyx_t_531 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_529, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_530, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_531, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4900:                                                     a[k] = 1
                          __pyx_t_532 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_532, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4901:                                                     break
                          goto __pyx_L135_break;
 4902: 
 4903: 
+4904:                                 i, j = xo - deli, yo - delj
                __pyx_t_476 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_533 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_476;
                __pyx_v_j = __pyx_t_533;
+4905:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_124 = (0 <= __pyx_v_i);
                if (__pyx_t_124) {
                  __pyx_t_124 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_125 = (__pyx_t_124 != 0);
                if (__pyx_t_125) {
                } else {
                  __pyx_t_23 = __pyx_t_125;
                  goto __pyx_L145_bool_binop_done;
                }
                __pyx_t_125 = (0 <= __pyx_v_j);
                if (__pyx_t_125) {
                  __pyx_t_125 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_124 = (__pyx_t_125 != 0);
                __pyx_t_23 = __pyx_t_124;
                __pyx_L145_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+4906:                                     if I[i, j] == 0:
                  __pyx_t_533 = __pyx_v_i;
                  __pyx_t_476 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_533, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_476, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+4907:                                         for dum in range(1):
                    for (__pyx_t_534 = 0; __pyx_t_534 < 1; __pyx_t_534+=1) {
                      __pyx_v_dum = __pyx_t_534;
 4908: 
+4909:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4910:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_535 = (__pyx_v_i - 1);
                        __pyx_t_536 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_535, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_536, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4911:                                                     I[i, j] = Io
                          __pyx_t_537 = __pyx_v_i;
                          __pyx_t_538 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_537, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_538, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4912:                                                     Col[i, j, 2] = red
                          __pyx_t_539 = __pyx_v_i;
                          __pyx_t_540 = __pyx_v_j;
                          __pyx_t_541 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_539, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_540, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_541, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4913:                                                     Col[i, j, 1] = green
                          __pyx_t_542 = __pyx_v_i;
                          __pyx_t_543 = __pyx_v_j;
                          __pyx_t_544 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_542, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_543, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_544, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4914:                                                     Col[i, j, 0] = blue
                          __pyx_t_545 = __pyx_v_i;
                          __pyx_t_546 = __pyx_v_j;
                          __pyx_t_547 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_545, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_546, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_547, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4915:                                                     a[k] = 1
                          __pyx_t_548 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_548, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4916:                                                     break
                          goto __pyx_L149_break;
+4917:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4918:                                                 if I[i, j - 1] == Io:
                        __pyx_t_549 = __pyx_v_i;
                        __pyx_t_550 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_549, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_550, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4919:                                                     I[i, j] = Io
                          __pyx_t_551 = __pyx_v_i;
                          __pyx_t_552 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_551, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_552, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4920:                                                     Col[i, j, 2] = red
                          __pyx_t_553 = __pyx_v_i;
                          __pyx_t_554 = __pyx_v_j;
                          __pyx_t_555 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_553, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_554, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_555, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4921:                                                     Col[i, j, 1] = green
                          __pyx_t_556 = __pyx_v_i;
                          __pyx_t_557 = __pyx_v_j;
                          __pyx_t_558 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_556, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_557, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_558, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4922:                                                     Col[i, j, 0] = blue
                          __pyx_t_559 = __pyx_v_i;
                          __pyx_t_560 = __pyx_v_j;
                          __pyx_t_561 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_559, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_560, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_561, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4923:                                                     a[k] = 1
                          __pyx_t_562 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_562, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4924:                                                     break
                          goto __pyx_L149_break;
 4925: 
+4926:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+4927:                                                 if I[i, j + 1] == Io:
                        __pyx_t_563 = __pyx_v_i;
                        __pyx_t_564 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_563, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_564, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4928:                                                     I[i, j] = Io
                          __pyx_t_565 = __pyx_v_i;
                          __pyx_t_566 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_565, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_566, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4929:                                                     Col[i, j, 2] = red
                          __pyx_t_567 = __pyx_v_i;
                          __pyx_t_568 = __pyx_v_j;
                          __pyx_t_569 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_567, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_568, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_569, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4930:                                                     Col[i, j, 1] = green
                          __pyx_t_570 = __pyx_v_i;
                          __pyx_t_571 = __pyx_v_j;
                          __pyx_t_572 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_570, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_571, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_572, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4931:                                                     Col[i, j, 0] = blue
                          __pyx_t_573 = __pyx_v_i;
                          __pyx_t_574 = __pyx_v_j;
                          __pyx_t_575 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_573, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_574, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_575, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4932:                                                     a[k] = 1
                          __pyx_t_576 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_576, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4933:                                                     break
                          goto __pyx_L149_break;
 4934: 
 4935: 
+4936:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L149_break:;
+4937:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_577 = (__pyx_v_i + 1);
                        __pyx_t_578 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_577, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_578, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+4938:                                                     I[i, j] = Io
                          __pyx_t_579 = __pyx_v_i;
                          __pyx_t_580 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_579, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_580, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+4939:                                                     Col[i, j, 2] = red
                          __pyx_t_581 = __pyx_v_i;
                          __pyx_t_582 = __pyx_v_j;
                          __pyx_t_583 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_581, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_582, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_583, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+4940:                                                     Col[i, j, 1] = green
                          __pyx_t_584 = __pyx_v_i;
                          __pyx_t_585 = __pyx_v_j;
                          __pyx_t_586 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_584, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_585, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_586, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+4941:                                                     Col[i, j, 0] = blue
                          __pyx_t_587 = __pyx_v_i;
                          __pyx_t_588 = __pyx_v_j;
                          __pyx_t_589 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_587, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_588, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_589, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+4942:                                                     a[k] = 1
                          __pyx_t_590 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_590, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+4943:                                                     break
                          goto __pyx_L149_break;
 4944: 
+4945:                     if a[k] == 0:
          __pyx_t_117 = __pyx_v_k;
          __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_23) {
/* … */
          }
+4946:                         xmin = max(0, xo - delX)
            __pyx_t_118 = (__pyx_v_xo - __pyx_v_delX);
            __pyx_t_591 = 0;
            if (((__pyx_t_118 > __pyx_t_591) != 0)) {
              __pyx_t_119 = __pyx_t_118;
            } else {
              __pyx_t_119 = __pyx_t_591;
            }
            __pyx_v_xmin = __pyx_t_119;
+4947:                         xmax = min(m - 1, xo + delX)
            __pyx_t_119 = (__pyx_v_xo + __pyx_v_delX);
            __pyx_t_118 = (__pyx_v_m - 1);
            if (((__pyx_t_119 < __pyx_t_118) != 0)) {
              __pyx_t_534 = __pyx_t_119;
            } else {
              __pyx_t_534 = __pyx_t_118;
            }
            __pyx_v_xmax = __pyx_t_534;
+4948:                         ymin = max(0, yo - delY)
            __pyx_t_534 = (__pyx_v_yo - __pyx_v_delY);
            __pyx_t_591 = 0;
            if (((__pyx_t_534 > __pyx_t_591) != 0)) {
              __pyx_t_119 = __pyx_t_534;
            } else {
              __pyx_t_119 = __pyx_t_591;
            }
            __pyx_v_ymin = __pyx_t_119;
+4949:                         ymax = min(n - 1, yo + delY)
            __pyx_t_119 = (__pyx_v_yo + __pyx_v_delY);
            __pyx_t_534 = (__pyx_v_n - 1);
            if (((__pyx_t_119 < __pyx_t_534) != 0)) {
              __pyx_t_118 = __pyx_t_119;
            } else {
              __pyx_t_118 = __pyx_t_534;
            }
            __pyx_v_ymax = __pyx_t_118;
+4950:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_118 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 4951: 
+4952:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
    }
+4953:         if asy == 0:
    __pyx_t_23 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_23) {
/* … */
    }
+4954:             break
      goto __pyx_L12_break;
 4955:         else:
+4956:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_7 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4956, __pyx_L1_error)
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_all); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4956, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4956, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_27 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4956, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_27);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = __Pyx_PyInt_EqObjC(__pyx_t_27, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4956, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 4956, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (__pyx_t_23) {
/* … */
      }
+4957:                 break
        goto __pyx_L12_break;
 4958:             else:
+4959:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4959, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+4960:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_61 = PyTuple_New(2); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_61, 1, __pyx_t_7);
        __pyx_t_8 = 0;
        __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_61);
        __pyx_t_61 = 0;
        __pyx_t_61 = PyDict_New(); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (PyDict_SetItem(__pyx_t_61, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_7, __pyx_t_61); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4960, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4960, __pyx_L1_error)
        __pyx_t_9 = ((PyArrayObject *)__pyx_t_6);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4960, __pyx_L1_error)
        }
        __pyx_t_9 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;
+4961:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4961, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_61 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ones); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4961, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4961, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4961, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4961, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4961, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_int8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4961, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 4961, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4961, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4961, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_8);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4961, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_8));
        __pyx_t_8 = 0;
+4962:                 MAJ = np.zeros(p, dtype=np.float64)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4962, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4962, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4962, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4962, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4962, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_61 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4962, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_61, __pyx_n_s_float64); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4962, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_27) < 0) __PYX_ERR(0, 4962, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4962, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4962, __pyx_L1_error)
        __pyx_t_15 = ((PyArrayObject *)__pyx_t_27);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_v_MAJ, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4962, __pyx_L1_error)
        }
        __pyx_t_15 = 0;
        __Pyx_DECREF_SET(__pyx_v_MAJ, ((PyArrayObject *)__pyx_t_27));
        __pyx_t_27 = 0;
+4963:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4963, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_centroids); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4963, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4963, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4963, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_61 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4963, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_1 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(4+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4963, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_1) {
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_26, __pyx_t_61);
        __pyx_t_8 = 0;
        __pyx_t_6 = 0;
        __pyx_t_61 = 0;
        __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4963, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_27))) || (PyList_CheckExact(__pyx_t_27))) {
          PyObject* sequence = __pyx_t_27;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 4963, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4963, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4963, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_61 = PyObject_GetIter(__pyx_t_27); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 4963, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_24 = Py_TYPE(__pyx_t_61)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_24(__pyx_t_61); if (unlikely(!__pyx_t_7)) goto __pyx_L161_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_5 = __pyx_t_24(__pyx_t_61); if (unlikely(!__pyx_t_5)) goto __pyx_L161_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_61), 2) < 0) __PYX_ERR(0, 4963, __pyx_L1_error)
          __pyx_t_24 = NULL;
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          goto __pyx_L162_unpacking_done;
          __pyx_L161_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_24 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 4963, __pyx_L1_error)
          __pyx_L162_unpacking_done:;
        }
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4963, __pyx_L1_error)
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4963, __pyx_L1_error)
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4963, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 4963, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+4964:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 4965: 
+4966:     toc = time.time()
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4966, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_27 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4966, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_27); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 4966, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_v_toc = __pyx_t_22;
+4967:     obj.exetime = toc - tic
  __pyx_t_27 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_27) < 0) __PYX_ERR(0, 4967, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+4968:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 4968, __pyx_L1_error)
+4969:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 4969, __pyx_L1_error)
+4970:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 4970, __pyx_L1_error)
+4971:     obj.ThetaValues = Theta
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_ThetaValues, ((PyObject *)__pyx_v_Theta)) < 0) __PYX_ERR(0, 4971, __pyx_L1_error)
+4972:     obj.adotValues = adotVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_adotValues, ((PyObject *)__pyx_v_adotVal)) < 0) __PYX_ERR(0, 4972, __pyx_L1_error)
+4973:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 4973, __pyx_L1_error)
+4974:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 4975: 
 4976: 
+4977: def Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_41Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_41Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot = {"Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot", (PyCFunction)__pyx_pw_9libEVOLVE_41Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_41Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_40Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_40Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PY_LONG_LONG __pyx_v_seq;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Adotfunc = NULL;
  PyObject *__pyx_v_Rfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  PY_LONG_LONG __pyx_v_imin;
  PY_LONG_LONG __pyx_v_imax;
  PY_LONG_LONG __pyx_v_jmin;
  PY_LONG_LONG __pyx_v_jmax;
  PY_LONG_LONG __pyx_v_io;
  PY_LONG_LONG __pyx_v_jo;
  PY_LONG_LONG __pyx_v_go;
  PY_LONG_LONG __pyx_v_found;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_l1;
  PY_LONG_LONG __pyx_v_l2;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_MAJceil;
  PY_LONG_LONG __pyx_v_MINceil;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_adotValmax;
  float __pyx_v_tmp;
  float __pyx_v_MIN;
  float __pyx_v_dr;
  float __pyx_v_R;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_II = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_adotVal = 0;
  PyArrayObject *__pyx_v_RVal = 0;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_II;
  __Pyx_Buffer __pyx_pybuffer_II;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_RVal;
  __Pyx_Buffer __pyx_pybuffer_RVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_adotVal;
  __Pyx_Buffer __pyx_pybuffer_adotVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_II.pybuffer.buf = NULL;
  __pyx_pybuffer_II.refcount = 0;
  __pyx_pybuffernd_II.data = NULL;
  __pyx_pybuffernd_II.rcbuffer = &__pyx_pybuffer_II;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_adotVal.pybuffer.buf = NULL;
  __pyx_pybuffer_adotVal.refcount = 0;
  __pyx_pybuffernd_adotVal.data = NULL;
  __pyx_pybuffernd_adotVal.rcbuffer = &__pyx_pybuffer_adotVal;
  __pyx_pybuffer_RVal.pybuffer.buf = NULL;
  __pyx_pybuffer_RVal.refcount = 0;
  __pyx_pybuffernd_RVal.data = NULL;
  __pyx_pybuffernd_RVal.rcbuffer = &__pyx_pybuffer_RVal;
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_27);
  __Pyx_XDECREF(__pyx_t_61);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_RVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_RVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Adotfunc);
  __Pyx_XDECREF(__pyx_v_Rfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_II);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_adotVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_RVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__51 = PyTuple_Pack(70, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_seq, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Adotfunc, __pyx_n_s_Rfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_MN, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_imin, __pyx_n_s_imax, __pyx_n_s_jmin, __pyx_n_s_jmax, __pyx_n_s_io, __pyx_n_s_jo, __pyx_n_s_go, __pyx_n_s_found, __pyx_n_s_dum, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_count, __pyx_n_s_l1, __pyx_n_s_l2, __pyx_n_s_countim, __pyx_n_s_MAJceil, __pyx_n_s_MINceil, __pyx_n_s_Iter, __pyx_n_s_adotValmax, __pyx_n_s_tmp, __pyx_n_s_MIN, __pyx_n_s_dr, __pyx_n_s_R, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_II, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_adotVal, __pyx_n_s_RVal, __pyx_n_s_MAJ, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 4977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__51);
  __Pyx_GIVEREF(__pyx_tuple__51);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_41Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_without_theta_with_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_11, __pyx_t_2) < 0) __PYX_ERR(0, 4977, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(1, 0, 70, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_11, 4977, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 4977, __pyx_L1_error)
 4978:     # Grabbing data from the input object
+4979:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4979, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+4980:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4980, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+4981:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4981, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4981, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+4982:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4982, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4982, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+4983:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4983, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+4984:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4984, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+4985:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4985, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_3;
+4986:     cdef long long seq = obj.seq
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_seq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 4986, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_seq = __pyx_t_2;
+4987:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4987, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_3;
+4988:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4988, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_3;
+4989:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+4990:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+4991:     Adotfunc = obj.Adotfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Adotfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Adotfunc = __pyx_t_1;
  __pyx_t_1 = 0;
+4992:     Rfunc = obj.Rfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Rfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Rfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 4993: 
 4994: 
 4995:     # Declaring other variables
 4996:     cdef double tic, toc
 4997:     cdef long long deli, delj, MN, PN, PE, PW, PS, Io, win, xmin, xmax, ymin, ymax, imin, imax, jmin, jmax, io, jo, go, found, dum, i, j, k, xo, yo, count, l1, l2, countim, MAJceil, MINceil, Iter
 4998:     cdef float adotValmax, tmp, MIN, dr, R, red, green, blue
+4999:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 4999, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 4999, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+5000:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5000, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5000, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+5001:     cdef np.ndarray[np.int_t, ndim = 2] II = np.zeros((m, n), dtype=np.int)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5001, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_II.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_II = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_II.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5001, __pyx_L1_error)
    } else {__pyx_pybuffernd_II.diminfo[0].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_II.diminfo[0].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_II.diminfo[1].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_II.diminfo[1].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_II = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+5002:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 5002, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5002, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5002, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+5003:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 5003, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5003, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5003, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+5004:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 5004, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5004, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5004, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+5005:     cdef np.ndarray[np.float64_t, ndim = 1] adotVal = np.zeros(p, dtype=np.float64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 5005, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5005, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_adotVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5005, __pyx_L1_error)
    } else {__pyx_pybuffernd_adotVal.diminfo[0].strides = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_adotVal.diminfo[0].shape = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_adotVal = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+5006:     cdef np.ndarray[np.float64_t, ndim = 1] RVal = np.zeros(p, dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 5006, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5006, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_RVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_RVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_RVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5006, __pyx_L1_error)
    } else {__pyx_pybuffernd_RVal.diminfo[0].strides = __pyx_pybuffernd_RVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_RVal.diminfo[0].shape = __pyx_pybuffernd_RVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_RVal = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+5007:     cdef np.ndarray[np.float64_t, ndim = 1] MAJ = np.zeros(p, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5007, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5007, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+5008:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5008, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5008, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5008, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+5009:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 5009, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5009, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5009, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+5010:     plantseed(myseed)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5010, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5010, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5010, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+5011:     col = np.random.random((p, 3))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5011, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5011, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5011, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5011, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5011, __pyx_L1_error)
  }
  __pyx_t_18 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_4));
  __pyx_t_4 = 0;
+5012:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5012, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5012, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5012, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_tic = __pyx_t_22;
 5013: 
+5014:     if pdelNxy == []:
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5014, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 5014, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_23) {
/* … */
    goto __pyx_L3;
  }
+5015:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_7 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5015, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 5015, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5015, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5015, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5015, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_24(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_5 = __pyx_t_24(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_6), 2) < 0) __PYX_ERR(0, 5015, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 5015, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5015, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5015, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5015, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5015, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 5016:     else:
+5017:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_25 = NULL;
    __pyx_t_26 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_25)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_25);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_26 = 1;
      }
    }
    __pyx_t_27 = PyTuple_New(7+__pyx_t_26); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    if (__pyx_t_25) {
      __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_25); __pyx_t_25 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_27, 0+__pyx_t_26, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_27, 1+__pyx_t_26, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_27, 2+__pyx_t_26, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_27, 3+__pyx_t_26, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_27, 4+__pyx_t_26, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_27, 5+__pyx_t_26, __pyx_t_1);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_27, 6+__pyx_t_26, __pyx_int_1);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_27, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 5017, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_27 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_27 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_27);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5017, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_27 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5017, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5017, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_24(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_27 = __pyx_t_24(__pyx_t_1); if (unlikely(!__pyx_t_27)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_27);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_1), 2) < 0) __PYX_ERR(0, 5017, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 5017, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5017, __pyx_L1_error)
    if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5017, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5017, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_27);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5017, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_27));
    __pyx_t_27 = 0;
  }
  __pyx_L3:;
 5018: 
+5019:     if labelsorted == 1:
  __pyx_t_23 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_23) {
/* … */
  }
+5020:         X, Y = labelsort(n, X, Y)
    __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5020, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5020, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = NULL;
    __pyx_t_26 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_27);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_27, function);
        __pyx_t_26 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(3+__pyx_t_26); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5020, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_26, __pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_26, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_26, ((PyObject *)__pyx_v_Y));
    __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5020, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 5020, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_27 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_27 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_27 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_4)->tp_iternext;
      index = 0; __pyx_t_27 = __pyx_t_24(__pyx_t_4); if (unlikely(!__pyx_t_27)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_27);
      index = 1; __pyx_t_6 = __pyx_t_24(__pyx_t_4); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_4), 2) < 0) __PYX_ERR(0, 5020, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 5020, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5020, __pyx_L1_error)
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5020, __pyx_L1_error)
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_27);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5020, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_27));
    __pyx_t_27 = 0;
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5020, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;
 5021: 
+5022:     Iter = 1
  __pyx_v_Iter = 1;
+5023:     while True:
  while (1) {
 5024: 
+5025:         if seq == 1 or seq == 3 or seq == 4:
    switch (__pyx_v_seq) {
      case 1:
      case 3:
      case 4:
/* … */
      break;
      default:
+5026:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+5027:                 I[X[k], Y[k]] = k + 1
        __pyx_t_29 = __pyx_v_k;
        __pyx_t_30 = __pyx_v_k;
        __pyx_t_31 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_32 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_32, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+5028:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_33 = __pyx_v_k;
        __pyx_t_34 = 0;
        __pyx_t_35 = __pyx_v_k;
        __pyx_t_36 = __pyx_v_k;
        __pyx_t_37 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_38 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_39 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_col.diminfo[1].strides));
+5029:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_40 = __pyx_v_k;
        __pyx_t_41 = 1;
        __pyx_t_42 = __pyx_v_k;
        __pyx_t_43 = __pyx_v_k;
        __pyx_t_44 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_45 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_46 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_col.diminfo[1].strides));
+5030:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_47 = __pyx_v_k;
        __pyx_t_48 = 2;
        __pyx_t_49 = __pyx_v_k;
        __pyx_t_50 = __pyx_v_k;
        __pyx_t_51 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_52 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_53 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_52, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_col.diminfo[1].strides));
+5031:                 RVal[k] = Rfunc(X[k], Y[k], k + 1, 1, 0)
        __pyx_t_54 = __pyx_v_k;
        __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5031, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_55 = __pyx_v_k;
        __pyx_t_27 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5031, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5031, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_Rfunc);
        __pyx_t_1 = __pyx_v_Rfunc; __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_25 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5031, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_26, __pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_26, __pyx_t_4);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_26, __pyx_int_0);
        __pyx_t_6 = 0;
        __pyx_t_27 = 0;
        __pyx_t_4 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5031, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5031, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_57 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_RVal.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_RVal.diminfo[0].strides) = __pyx_t_56;
+5032:                 adotVal[k] = Adotfunc(X[k], Y[k], k + 1, 0, RVal[k])
        __pyx_t_58 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5032, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_59 = __pyx_v_k;
        __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5032, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5032, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_60 = __pyx_v_k;
        __pyx_t_27 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_RVal.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_RVal.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5032, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_INCREF(__pyx_v_Adotfunc);
        __pyx_t_6 = __pyx_v_Adotfunc; __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_61 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5032, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_61, 0+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_61, 1+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_61, 2+__pyx_t_26, __pyx_t_4);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_61, 3+__pyx_t_26, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_61, 4+__pyx_t_26, __pyx_t_27);
        __pyx_t_1 = 0;
        __pyx_t_25 = 0;
        __pyx_t_4 = 0;
        __pyx_t_27 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_61, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5032, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5032, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_62 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_56;
      }
 5033:         else:
+5034:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+5035:                 I[X[k], Y[k]] = k + 1
        __pyx_t_63 = __pyx_v_k;
        __pyx_t_64 = __pyx_v_k;
        __pyx_t_65 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_66 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+5036:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_67 = __pyx_v_k;
        __pyx_t_68 = 0;
        __pyx_t_69 = __pyx_v_k;
        __pyx_t_70 = __pyx_v_k;
        __pyx_t_71 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_72 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_73 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_73, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_col.diminfo[1].strides));
+5037:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_74 = __pyx_v_k;
        __pyx_t_75 = 1;
        __pyx_t_76 = __pyx_v_k;
        __pyx_t_77 = __pyx_v_k;
        __pyx_t_78 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_79 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_80 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_80, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_col.diminfo[1].strides));
+5038:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_81 = __pyx_v_k;
        __pyx_t_82 = 2;
        __pyx_t_83 = __pyx_v_k;
        __pyx_t_84 = __pyx_v_k;
        __pyx_t_85 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_86 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_87 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_87, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_82, __pyx_pybuffernd_col.diminfo[1].strides));
+5039:                 adotVal[k] = Adotfunc(X[k], Y[k], k + 1, 0, 1)
        __pyx_t_88 = __pyx_v_k;
        __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5039, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_89 = __pyx_v_k;
        __pyx_t_61 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5039, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5039, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_INCREF(__pyx_v_Adotfunc);
        __pyx_t_4 = __pyx_v_Adotfunc; __pyx_t_25 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_25)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_25);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_1 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5039, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__pyx_t_25) {
          __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_25); __pyx_t_25 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_26, __pyx_t_27);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_26, __pyx_int_0);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_6 = 0;
        __pyx_t_61 = 0;
        __pyx_t_27 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5039, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5039, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_90 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_56;
+5040:                 RVal[k] = Rfunc(X[k], Y[k], k + 1, adotVal[k], 0)
        __pyx_t_91 = __pyx_v_k;
        __pyx_t_4 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5040, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_92 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5040, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5040, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_93 = __pyx_v_k;
        __pyx_t_61 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5040, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_INCREF(__pyx_v_Rfunc);
        __pyx_t_6 = __pyx_v_Rfunc; __pyx_t_25 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_25)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_25);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5040, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_25) {
          __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_25); __pyx_t_25 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_26, __pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_26, __pyx_t_61);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_26, __pyx_int_0);
        __pyx_t_4 = 0;
        __pyx_t_1 = 0;
        __pyx_t_27 = 0;
        __pyx_t_61 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5040, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5040, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_94 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_RVal.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_RVal.diminfo[0].strides) = __pyx_t_56;
      }
      break;
    }
 5041: 
 5042: 
 5043: 
 5044: 
+5045:         adotValmax = max(adotVal)
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5045, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(((PyObject *)__pyx_v_adotVal));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_adotVal));
    PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_v_adotVal));
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5045, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_95 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_95 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 5045, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_adotValmax = __pyx_t_95;
 5046: 
+5047:         showriteframe(sa, sf, fd, 0, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, 0, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
 5048: 
+5049:         countim = 1
    __pyx_v_countim = 1;
+5050:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5050, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5050, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (!__pyx_t_7) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5050, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      } else {
        __pyx_t_61 = PyTuple_New(1+1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5050, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_7); __pyx_t_7 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_61, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_61, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5050, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5050, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 5050, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (!__pyx_t_23) break;
+5051:             adotValmax = 0
      __pyx_v_adotValmax = 0.0;
+5052:             for i in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_i = __pyx_t_28;
+5053:                 if a[i] == 1:
        __pyx_t_96 = __pyx_v_i;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_23) {
/* … */
        }
      }
+5054:                     tmp = adotVal[i]
          __pyx_t_97 = __pyx_v_i;
          __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_adotVal.diminfo[0].strides));
+5055:                     if tmp > adotValmax:
          __pyx_t_23 = ((__pyx_v_tmp > __pyx_v_adotValmax) != 0);
          if (__pyx_t_23) {
/* … */
          }
+5056:                         adotValmax = tmp
            __pyx_v_adotValmax = __pyx_v_tmp;
 5057: 
+5058:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+5059:                 if a[k] == 1:
        __pyx_t_98 = __pyx_v_k;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_23) {
/* … */
        }
      }
+5060:                     a[k] = 0
          __pyx_t_99 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+5061:                     xo = X[k]
          __pyx_t_100 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_100, __pyx_pybuffernd_X.diminfo[0].strides));
+5062:                     yo = Y[k]
          __pyx_t_101 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_Y.diminfo[0].strides));
+5063:                     Io = I[xo, yo]
          __pyx_t_102 = __pyx_v_xo;
          __pyx_t_103 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_103, __pyx_pybuffernd_I.diminfo[1].strides));
 5064: 
+5065:                     dr = adotVal[k] / adotValmax
          __pyx_t_104 = __pyx_v_k;
          __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_adotVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_adotValmax));
+5066:                     MAJ[k] = MAJ[k] + dr
          __pyx_t_105 = __pyx_v_k;
          __pyx_t_106 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + __pyx_v_dr);
+5067:                     R = RVal[k]
          __pyx_t_107 = __pyx_v_k;
          __pyx_v_R = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_RVal.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_RVal.diminfo[0].strides));
+5068:                     MIN = MAJ[k] / R
          __pyx_t_108 = __pyx_v_k;
          __pyx_v_MIN = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_MAJ.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_R));
+5069:                     MAJceil = math.ceil(MAJ[k])
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5069, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_61 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5069, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_109 = __pyx_v_k;
          __pyx_t_6 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_MAJ.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5069, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_61))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_61);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_61);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_61, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_61, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5069, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_5);
          } else {
            __pyx_t_27 = PyTuple_New(1+1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5069, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_27, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_27, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5069, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          }
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_110 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_110 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5069, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_v_MAJceil = __pyx_t_110;
+5070:                     MINceil = math.ceil(MIN)
          __pyx_t_61 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5070, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_61, __pyx_n_s_ceil); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5070, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_61 = PyFloat_FromDouble(__pyx_v_MIN); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5070, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_27);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_27, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_t_61); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5070, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
            __Pyx_GOTREF(__pyx_t_5);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5070, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_61);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_61);
            __pyx_t_61 = 0;
            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5070, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_110 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_110 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5070, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_v_MINceil = __pyx_t_110;
+5071:                     red = col[k, 0]
          __pyx_t_110 = __pyx_v_k;
          __pyx_t_111 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_111, __pyx_pybuffernd_col.diminfo[1].strides));
+5072:                     green = col[k, 1]
          __pyx_t_112 = __pyx_v_k;
          __pyx_t_113 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_col.diminfo[1].strides));
+5073:                     blue = col[k, 2]
          __pyx_t_114 = __pyx_v_k;
          __pyx_t_115 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_115, __pyx_pybuffernd_col.diminfo[1].strides));
 5074: 
+5075:                     imin, imax, jmin, jmax = xo, xo, yo, yo
          __pyx_t_116 = __pyx_v_xo;
          __pyx_t_117 = __pyx_v_xo;
          __pyx_t_118 = __pyx_v_yo;
          __pyx_t_119 = __pyx_v_yo;
          __pyx_v_imin = __pyx_t_116;
          __pyx_v_imax = __pyx_t_117;
          __pyx_v_jmin = __pyx_t_118;
          __pyx_v_jmax = __pyx_t_119;
+5076:                     count = 0
          __pyx_v_count = 0;
+5077:                     for deli in range(0, MAJceil + 1):
          __pyx_t_119 = (__pyx_v_MAJceil + 1);
          for (__pyx_t_118 = 0; __pyx_t_118 < __pyx_t_119; __pyx_t_118+=1) {
            __pyx_v_deli = __pyx_t_118;
+5078:                         for delj in range(0, MINceil + 1):
            __pyx_t_117 = (__pyx_v_MINceil + 1);
            for (__pyx_t_116 = 0; __pyx_t_116 < __pyx_t_117; __pyx_t_116+=1) {
              __pyx_v_delj = __pyx_t_116;
+5079:                             if (deli / MAJ[k]) ** 2 + (delj / MIN) ** 2 <= 1:
              __pyx_t_120 = __pyx_v_k;
              __pyx_t_23 = (((pow((((__pyx_t_5numpy_float64_t)__pyx_v_deli) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((float)__pyx_v_delj) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
+5080:                                 for l1 in range(-1, 2, 2):
                for (__pyx_t_121 = -1L; __pyx_t_121 < 2; __pyx_t_121+=2) {
                  __pyx_v_l1 = __pyx_t_121;
+5081:                                     for l2 in range(-1, 2, 2):
                  for (__pyx_t_122 = -1L; __pyx_t_122 < 2; __pyx_t_122+=2) {
                    __pyx_v_l2 = __pyx_t_122;
+5082:                                         i, j = xo + l1 * deli, yo + l2 * delj
                    __pyx_t_123 = (__pyx_v_xo + (__pyx_v_l1 * __pyx_v_deli));
                    __pyx_t_124 = (__pyx_v_yo + (__pyx_v_l2 * __pyx_v_delj));
                    __pyx_v_i = __pyx_t_123;
                    __pyx_v_j = __pyx_t_124;
+5083:                                         if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                    __pyx_t_125 = (0 <= __pyx_v_i);
                    if (__pyx_t_125) {
                      __pyx_t_125 = (__pyx_v_i <= (__pyx_v_m - 1));
                    }
                    __pyx_t_126 = (__pyx_t_125 != 0);
                    if (__pyx_t_126) {
                    } else {
                      __pyx_t_23 = __pyx_t_126;
                      goto __pyx_L36_bool_binop_done;
                    }
                    __pyx_t_126 = (0 <= __pyx_v_j);
                    if (__pyx_t_126) {
                      __pyx_t_126 = (__pyx_v_j <= (__pyx_v_n - 1));
                    }
                    __pyx_t_125 = (__pyx_t_126 != 0);
                    __pyx_t_23 = __pyx_t_125;
                    __pyx_L36_bool_binop_done:;
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                }
+5084:                                             if I[i, j] == 0:
                      __pyx_t_124 = __pyx_v_i;
                      __pyx_t_123 = __pyx_v_j;
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_123, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5085:                                                 II[i, j] = Io
                        __pyx_t_127 = __pyx_v_i;
                        __pyx_t_128 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_II.diminfo[1].strides) = __pyx_v_Io;
+5086:                                                 count = count + 1
                        __pyx_v_count = (__pyx_v_count + 1);
+5087:                                                 if i > imax:
                        __pyx_t_23 = ((__pyx_v_i > __pyx_v_imax) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5088:                                                     imax = i
                          __pyx_v_imax = __pyx_v_i;
+5089:                                                 if i < imin:
                        __pyx_t_23 = ((__pyx_v_i < __pyx_v_imin) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5090:                                                     imin = i
                          __pyx_v_imin = __pyx_v_i;
+5091:                                                 if j > jmax:
                        __pyx_t_23 = ((__pyx_v_j > __pyx_v_jmax) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5092:                                                     jmax = j
                          __pyx_v_jmax = __pyx_v_j;
+5093:                                                 if j < jmin:
                        __pyx_t_23 = ((__pyx_v_j < __pyx_v_jmin) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5094:                                                     jmin = j
                          __pyx_v_jmin = __pyx_v_j;
 5095: 
+5096:                     if count > 0:
          __pyx_t_23 = ((__pyx_v_count > 0) != 0);
          if (__pyx_t_23) {
/* … */
          }
+5097:                         i = imin
            __pyx_v_i = __pyx_v_imin;
+5098:                         go = 1
            __pyx_v_go = 1;
+5099:                         found = 0
            __pyx_v_found = 0;
+5100:                         while go is True:
            while (1) {
              __pyx_t_23 = ((__pyx_v_go == 1) != 0);
              if (!__pyx_t_23) break;
+5101:                             for j in range(jmin, jmax + 1, 1):
              __pyx_t_119 = (__pyx_v_jmax + 1);
              for (__pyx_t_118 = __pyx_v_jmin; __pyx_t_118 < __pyx_t_119; __pyx_t_118+=1) {
                __pyx_v_j = __pyx_t_118;
+5102:                                 if II[i, j] == Io:
                __pyx_t_117 = __pyx_v_i;
                __pyx_t_116 = __pyx_v_j;
                __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                if (__pyx_t_23) {
/* … */
                }
              }
              __pyx_L47_break:;
+5103:                                     if i > 0:
                  __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5104:                                         if  I[i - 1, j] == Io:
                    __pyx_t_121 = (__pyx_v_i - 1);
                    __pyx_t_122 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+5105:                                             io, jo = i, j
                      __pyx_t_129 = __pyx_v_i;
                      __pyx_t_130 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_129;
                      __pyx_v_jo = __pyx_t_130;
+5106:                                             go = 0
                      __pyx_v_go = 0;
+5107:                                             found = 1
                      __pyx_v_found = 1;
+5108:                                             break
                      goto __pyx_L47_break;
+5109:                                     if j > 0:
                  __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5110:                                         if I[i, j - 1] == Io:
                    __pyx_t_130 = __pyx_v_i;
                    __pyx_t_129 = (__pyx_v_j - 1);
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_129, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+5111:                                             io, jo = i, j
                      __pyx_t_131 = __pyx_v_i;
                      __pyx_t_132 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_131;
                      __pyx_v_jo = __pyx_t_132;
+5112:                                             go = 0
                      __pyx_v_go = 0;
+5113:                                             found = 1
                      __pyx_v_found = 1;
+5114:                                             break
                      goto __pyx_L47_break;
 5115: 
+5116:                                     if j < n - 1:
                  __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5117:                                         if I[i, j + 1] == Io:
                    __pyx_t_132 = __pyx_v_i;
                    __pyx_t_131 = (__pyx_v_j + 1);
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_131, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+5118:                                             io, jo = i, j
                      __pyx_t_133 = __pyx_v_i;
                      __pyx_t_134 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_133;
                      __pyx_v_jo = __pyx_t_134;
+5119:                                             go = 0
                      __pyx_v_go = 0;
+5120:                                             found = 1
                      __pyx_v_found = 1;
+5121:                                             break
                      goto __pyx_L47_break;
 5122: 
 5123: 
+5124:                                     if i < m - 1:
                  __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5125:                                         if  I[i + 1, j] == Io:
                    __pyx_t_134 = (__pyx_v_i + 1);
                    __pyx_t_133 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_133, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+5126:                                             io, jo = i, j
                      __pyx_t_135 = __pyx_v_i;
                      __pyx_t_136 = __pyx_v_j;
                      __pyx_v_io = __pyx_t_135;
                      __pyx_v_jo = __pyx_t_136;
+5127:                                             go = 0
                      __pyx_v_go = 0;
+5128:                                             found = 1
                      __pyx_v_found = 1;
+5129:                                             break
                      goto __pyx_L47_break;
+5130:                             i = i + 1
              __pyx_v_i = (__pyx_v_i + 1);
+5131:                             if i == imax + 1:
              __pyx_t_23 = ((__pyx_v_i == (__pyx_v_imax + 1)) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
+5132:                                 go = 0
                __pyx_v_go = 0;
 5133: 
+5134:                         if found == 1:
            __pyx_t_23 = ((__pyx_v_found == 1) != 0);
            if (__pyx_t_23) {
/* … */
            }
 5135: 
 5136:                             # OUTWARD
+5137:                             for i in range(io, imax + 1):
              __pyx_t_119 = (__pyx_v_imax + 1);
              for (__pyx_t_118 = __pyx_v_io; __pyx_t_118 < __pyx_t_119; __pyx_t_118+=1) {
                __pyx_v_i = __pyx_t_118;
+5138:                                 for j in range(jo, jmax + 1):
                __pyx_t_136 = (__pyx_v_jmax + 1);
                for (__pyx_t_135 = __pyx_v_jo; __pyx_t_135 < __pyx_t_136; __pyx_t_135+=1) {
                  __pyx_v_j = __pyx_t_135;
+5139:                                     for dum in range(1):
                  for (__pyx_t_137 = 0; __pyx_t_137 < 1; __pyx_t_137+=1) {
                    __pyx_v_dum = __pyx_t_137;
+5140:                                         if II[i, j] == Io:
                    __pyx_t_138 = __pyx_v_i;
                    __pyx_t_139 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_138, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_139, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L64_break:;
                }
+5141:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5142:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_140 = (__pyx_v_i - 1);
                        __pyx_t_141 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5143:                                                     I[i, j] = Io
                          __pyx_t_142 = __pyx_v_i;
                          __pyx_t_143 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_143, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5144:                                                     Col[i, j, 2] = red
                          __pyx_t_144 = __pyx_v_i;
                          __pyx_t_145 = __pyx_v_j;
                          __pyx_t_146 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5145:                                                     Col[i, j, 1] = green
                          __pyx_t_147 = __pyx_v_i;
                          __pyx_t_148 = __pyx_v_j;
                          __pyx_t_149 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_148, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_149, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5146:                                                     Col[i, j, 0] = blue
                          __pyx_t_150 = __pyx_v_i;
                          __pyx_t_151 = __pyx_v_j;
                          __pyx_t_152 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_151, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_152, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5147:                                                     a[k] = 1
                          __pyx_t_153 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5148:                                                     break
                          goto __pyx_L64_break;
+5149:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5150:                                                 if I[i, j - 1] == Io:
                        __pyx_t_154 = __pyx_v_i;
                        __pyx_t_155 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_155, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5151:                                                     I[i, j] = Io
                          __pyx_t_156 = __pyx_v_i;
                          __pyx_t_157 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_157, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5152:                                                     Col[i, j, 2] = red
                          __pyx_t_158 = __pyx_v_i;
                          __pyx_t_159 = __pyx_v_j;
                          __pyx_t_160 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5153:                                                     Col[i, j, 1] = green
                          __pyx_t_161 = __pyx_v_i;
                          __pyx_t_162 = __pyx_v_j;
                          __pyx_t_163 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5154:                                                     Col[i, j, 0] = blue
                          __pyx_t_164 = __pyx_v_i;
                          __pyx_t_165 = __pyx_v_j;
                          __pyx_t_166 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5155:                                                     a[k] = 1
                          __pyx_t_167 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_167, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5156:                                                     break
                          goto __pyx_L64_break;
 5157: 
+5158:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5159:                                                 if I[i, j + 1] == Io:
                        __pyx_t_168 = __pyx_v_i;
                        __pyx_t_169 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5160:                                                     I[i, j] = Io
                          __pyx_t_170 = __pyx_v_i;
                          __pyx_t_171 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_171, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5161:                                                     Col[i, j, 2] = red
                          __pyx_t_172 = __pyx_v_i;
                          __pyx_t_173 = __pyx_v_j;
                          __pyx_t_174 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_172, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_173, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_174, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5162:                                                     Col[i, j, 1] = green
                          __pyx_t_175 = __pyx_v_i;
                          __pyx_t_176 = __pyx_v_j;
                          __pyx_t_177 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_176, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_177, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5163:                                                     Col[i, j, 0] = blue
                          __pyx_t_178 = __pyx_v_i;
                          __pyx_t_179 = __pyx_v_j;
                          __pyx_t_180 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_178, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_179, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_180, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5164:                                                     a[k] = 1
                          __pyx_t_181 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_181, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5165:                                                     break
                          goto __pyx_L64_break;
 5166: 
 5167: 
+5168:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5169:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_182 = (__pyx_v_i + 1);
                        __pyx_t_183 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_183, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5170:                                                     I[i, j] = Io
                          __pyx_t_184 = __pyx_v_i;
                          __pyx_t_185 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_185, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5171:                                                     Col[i, j, 2] = red
                          __pyx_t_186 = __pyx_v_i;
                          __pyx_t_187 = __pyx_v_j;
                          __pyx_t_188 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5172:                                                     Col[i, j, 1] = green
                          __pyx_t_189 = __pyx_v_i;
                          __pyx_t_190 = __pyx_v_j;
                          __pyx_t_191 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_190, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_191, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5173:                                                     Col[i, j, 0] = blue
                          __pyx_t_192 = __pyx_v_i;
                          __pyx_t_193 = __pyx_v_j;
                          __pyx_t_194 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_192, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_193, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_194, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5174:                                                     a[k] = 1
                          __pyx_t_195 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_195, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5175:                                                     break
                          goto __pyx_L64_break;
 5176: 
+5177:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_136 = (__pyx_v_jmin - 1);
                for (__pyx_t_135 = (__pyx_v_jo - 1); __pyx_t_135 > __pyx_t_136; __pyx_t_135-=1) {
                  __pyx_v_j = __pyx_t_135;
+5178:                                     for dum in range(1):
                  for (__pyx_t_137 = 0; __pyx_t_137 < 1; __pyx_t_137+=1) {
                    __pyx_v_dum = __pyx_t_137;
+5179:                                         if II[i, j] == Io:
                    __pyx_t_196 = __pyx_v_i;
                    __pyx_t_197 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_196, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_197, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L77_break:;
                }
              }
+5180:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5181:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_198 = (__pyx_v_i - 1);
                        __pyx_t_199 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_199, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5182:                                                     I[i, j] = Io
                          __pyx_t_200 = __pyx_v_i;
                          __pyx_t_201 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_200, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_201, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5183:                                                     Col[i, j, 2] = red
                          __pyx_t_202 = __pyx_v_i;
                          __pyx_t_203 = __pyx_v_j;
                          __pyx_t_204 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_202, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_204, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5184:                                                     Col[i, j, 1] = green
                          __pyx_t_205 = __pyx_v_i;
                          __pyx_t_206 = __pyx_v_j;
                          __pyx_t_207 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_205, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_206, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_207, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5185:                                                     Col[i, j, 0] = blue
                          __pyx_t_208 = __pyx_v_i;
                          __pyx_t_209 = __pyx_v_j;
                          __pyx_t_210 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_208, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_209, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_210, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5186:                                                     a[k] = 1
                          __pyx_t_211 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_211, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5187:                                                     break
                          goto __pyx_L77_break;
+5188:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5189:                                                 if I[i, j - 1] == Io:
                        __pyx_t_212 = __pyx_v_i;
                        __pyx_t_213 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_212, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_213, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5190:                                                     I[i, j] = Io
                          __pyx_t_214 = __pyx_v_i;
                          __pyx_t_215 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_214, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_215, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5191:                                                     Col[i, j, 2] = red
                          __pyx_t_216 = __pyx_v_i;
                          __pyx_t_217 = __pyx_v_j;
                          __pyx_t_218 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_216, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_217, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_218, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5192:                                                     Col[i, j, 1] = green
                          __pyx_t_219 = __pyx_v_i;
                          __pyx_t_220 = __pyx_v_j;
                          __pyx_t_221 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_219, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_220, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_221, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5193:                                                     Col[i, j, 0] = blue
                          __pyx_t_222 = __pyx_v_i;
                          __pyx_t_223 = __pyx_v_j;
                          __pyx_t_224 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_222, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_223, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_224, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5194:                                                     a[k] = 1
                          __pyx_t_225 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_225, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5195:                                                     break
                          goto __pyx_L77_break;
 5196: 
+5197:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5198:                                                 if I[i, j + 1] == Io:
                        __pyx_t_226 = __pyx_v_i;
                        __pyx_t_227 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_226, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_227, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5199:                                                     I[i, j] = Io
                          __pyx_t_228 = __pyx_v_i;
                          __pyx_t_229 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_228, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_229, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5200:                                                     Col[i, j, 2] = red
                          __pyx_t_230 = __pyx_v_i;
                          __pyx_t_231 = __pyx_v_j;
                          __pyx_t_232 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_230, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_232, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5201:                                                     Col[i, j, 1] = green
                          __pyx_t_233 = __pyx_v_i;
                          __pyx_t_234 = __pyx_v_j;
                          __pyx_t_235 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_233, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_234, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_235, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5202:                                                     Col[i, j, 0] = blue
                          __pyx_t_236 = __pyx_v_i;
                          __pyx_t_237 = __pyx_v_j;
                          __pyx_t_238 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_236, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_237, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_238, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5203:                                                     a[k] = 1
                          __pyx_t_239 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_239, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5204:                                                     break
                          goto __pyx_L77_break;
 5205: 
 5206: 
+5207:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5208:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_240 = (__pyx_v_i + 1);
                        __pyx_t_241 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_240, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_241, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5209:                                                     I[i, j] = Io
                          __pyx_t_242 = __pyx_v_i;
                          __pyx_t_243 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_242, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_243, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5210:                                                     Col[i, j, 2] = red
                          __pyx_t_244 = __pyx_v_i;
                          __pyx_t_245 = __pyx_v_j;
                          __pyx_t_246 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_244, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_245, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_246, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5211:                                                     Col[i, j, 1] = green
                          __pyx_t_247 = __pyx_v_i;
                          __pyx_t_248 = __pyx_v_j;
                          __pyx_t_249 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_247, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_248, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_249, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5212:                                                     Col[i, j, 0] = blue
                          __pyx_t_250 = __pyx_v_i;
                          __pyx_t_251 = __pyx_v_j;
                          __pyx_t_252 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_250, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_251, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_252, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5213:                                                     a[k] = 1
                          __pyx_t_253 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_253, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5214:                                                     break
                          goto __pyx_L77_break;
 5215: 
 5216: 
 5217: 
+5218:                             for i in range(io - 1, imin - 1, -1):
              __pyx_t_119 = (__pyx_v_imin - 1);
              for (__pyx_t_118 = (__pyx_v_io - 1); __pyx_t_118 > __pyx_t_119; __pyx_t_118-=1) {
                __pyx_v_i = __pyx_t_118;
+5219:                                 for j in range(jo, jmax + 1):
                __pyx_t_136 = (__pyx_v_jmax + 1);
                for (__pyx_t_135 = __pyx_v_jo; __pyx_t_135 < __pyx_t_136; __pyx_t_135+=1) {
                  __pyx_v_j = __pyx_t_135;
+5220:                                     for dum in range(1):
                  for (__pyx_t_137 = 0; __pyx_t_137 < 1; __pyx_t_137+=1) {
                    __pyx_v_dum = __pyx_t_137;
+5221:                                         if II[i, j] == Io:
                    __pyx_t_254 = __pyx_v_i;
                    __pyx_t_255 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_254, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_255, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L92_break:;
                }
+5222:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5223:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_256 = (__pyx_v_i - 1);
                        __pyx_t_257 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_256, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_257, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5224:                                                     I[i, j] = Io
                          __pyx_t_258 = __pyx_v_i;
                          __pyx_t_259 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_258, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_259, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5225:                                                     Col[i, j, 2] = red
                          __pyx_t_260 = __pyx_v_i;
                          __pyx_t_261 = __pyx_v_j;
                          __pyx_t_262 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_260, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_261, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_262, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5226:                                                     Col[i, j, 1] = green
                          __pyx_t_263 = __pyx_v_i;
                          __pyx_t_264 = __pyx_v_j;
                          __pyx_t_265 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_263, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_264, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_265, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5227:                                                     Col[i, j, 0] = blue
                          __pyx_t_266 = __pyx_v_i;
                          __pyx_t_267 = __pyx_v_j;
                          __pyx_t_268 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_266, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_267, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_268, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5228:                                                     a[k] = 1
                          __pyx_t_269 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_269, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5229:                                                     break
                          goto __pyx_L92_break;
+5230:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5231:                                                 if I[i, j - 1] == Io:
                        __pyx_t_270 = __pyx_v_i;
                        __pyx_t_271 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_270, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_271, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5232:                                                     I[i, j] = Io
                          __pyx_t_272 = __pyx_v_i;
                          __pyx_t_273 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_272, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_273, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5233:                                                     Col[i, j, 2] = red
                          __pyx_t_274 = __pyx_v_i;
                          __pyx_t_275 = __pyx_v_j;
                          __pyx_t_276 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_274, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_275, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_276, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5234:                                                     Col[i, j, 1] = green
                          __pyx_t_277 = __pyx_v_i;
                          __pyx_t_278 = __pyx_v_j;
                          __pyx_t_279 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_277, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_278, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_279, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5235:                                                     Col[i, j, 0] = blue
                          __pyx_t_280 = __pyx_v_i;
                          __pyx_t_281 = __pyx_v_j;
                          __pyx_t_282 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_280, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_281, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_282, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5236:                                                     a[k] = 1
                          __pyx_t_283 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_283, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5237:                                                     break
                          goto __pyx_L92_break;
 5238: 
+5239:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5240:                                                 if I[i, j + 1] == Io:
                        __pyx_t_284 = __pyx_v_i;
                        __pyx_t_285 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_285, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5241:                                                     I[i, j] = Io
                          __pyx_t_286 = __pyx_v_i;
                          __pyx_t_287 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_286, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_287, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5242:                                                     Col[i, j, 2] = red
                          __pyx_t_288 = __pyx_v_i;
                          __pyx_t_289 = __pyx_v_j;
                          __pyx_t_290 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_288, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_289, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_290, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5243:                                                     Col[i, j, 1] = green
                          __pyx_t_291 = __pyx_v_i;
                          __pyx_t_292 = __pyx_v_j;
                          __pyx_t_293 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_291, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_292, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_293, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5244:                                                     Col[i, j, 0] = blue
                          __pyx_t_294 = __pyx_v_i;
                          __pyx_t_295 = __pyx_v_j;
                          __pyx_t_296 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_294, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_295, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_296, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5245:                                                     a[k] = 1
                          __pyx_t_297 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_297, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5246:                                                     break
                          goto __pyx_L92_break;
 5247: 
 5248: 
+5249:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5250:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_298 = (__pyx_v_i + 1);
                        __pyx_t_299 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_298, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_299, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5251:                                                     I[i, j] = Io
                          __pyx_t_300 = __pyx_v_i;
                          __pyx_t_301 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_300, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_301, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5252:                                                     Col[i, j, 2] = red
                          __pyx_t_302 = __pyx_v_i;
                          __pyx_t_303 = __pyx_v_j;
                          __pyx_t_304 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_302, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_303, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_304, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5253:                                                     Col[i, j, 1] = green
                          __pyx_t_305 = __pyx_v_i;
                          __pyx_t_306 = __pyx_v_j;
                          __pyx_t_307 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_305, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_306, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_307, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5254:                                                     Col[i, j, 0] = blue
                          __pyx_t_308 = __pyx_v_i;
                          __pyx_t_309 = __pyx_v_j;
                          __pyx_t_310 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_308, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_309, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_310, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5255:                                                     a[k] = 1
                          __pyx_t_311 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_311, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5256:                                                     break
                          goto __pyx_L92_break;
 5257: 
+5258:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_136 = (__pyx_v_jmin - 1);
                for (__pyx_t_135 = (__pyx_v_jo - 1); __pyx_t_135 > __pyx_t_136; __pyx_t_135-=1) {
                  __pyx_v_j = __pyx_t_135;
+5259:                                     for dum in range(1):
                  for (__pyx_t_137 = 0; __pyx_t_137 < 1; __pyx_t_137+=1) {
                    __pyx_v_dum = __pyx_t_137;
+5260:                                         if II[i, j] == Io:
                    __pyx_t_312 = __pyx_v_i;
                    __pyx_t_313 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_312, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_313, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L105_break:;
                }
              }
+5261:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5262:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_314 = (__pyx_v_i - 1);
                        __pyx_t_315 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_314, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_315, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5263:                                                     I[i, j] = Io
                          __pyx_t_316 = __pyx_v_i;
                          __pyx_t_317 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_316, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_317, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5264:                                                     Col[i, j, 2] = red
                          __pyx_t_318 = __pyx_v_i;
                          __pyx_t_319 = __pyx_v_j;
                          __pyx_t_320 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_318, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_319, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_320, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5265:                                                     Col[i, j, 1] = green
                          __pyx_t_321 = __pyx_v_i;
                          __pyx_t_322 = __pyx_v_j;
                          __pyx_t_323 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_321, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_322, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_323, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5266:                                                     Col[i, j, 0] = blue
                          __pyx_t_324 = __pyx_v_i;
                          __pyx_t_325 = __pyx_v_j;
                          __pyx_t_326 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_324, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_325, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_326, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5267:                                                     a[k] = 1
                          __pyx_t_327 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_327, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5268:                                                     break
                          goto __pyx_L105_break;
+5269:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5270:                                                 if I[i, j - 1] == Io:
                        __pyx_t_328 = __pyx_v_i;
                        __pyx_t_329 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_328, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_329, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5271:                                                     I[i, j] = Io
                          __pyx_t_330 = __pyx_v_i;
                          __pyx_t_331 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_330, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_331, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5272:                                                     Col[i, j, 2] = red
                          __pyx_t_332 = __pyx_v_i;
                          __pyx_t_333 = __pyx_v_j;
                          __pyx_t_334 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_332, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_333, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_334, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5273:                                                     Col[i, j, 1] = green
                          __pyx_t_335 = __pyx_v_i;
                          __pyx_t_336 = __pyx_v_j;
                          __pyx_t_337 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_335, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_336, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_337, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5274:                                                     Col[i, j, 0] = blue
                          __pyx_t_338 = __pyx_v_i;
                          __pyx_t_339 = __pyx_v_j;
                          __pyx_t_340 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_338, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_339, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_340, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5275:                                                     a[k] = 1
                          __pyx_t_341 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_341, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5276:                                                     break
                          goto __pyx_L105_break;
 5277: 
+5278:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5279:                                                 if I[i, j + 1] == Io:
                        __pyx_t_342 = __pyx_v_i;
                        __pyx_t_343 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_342, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_343, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5280:                                                     I[i, j] = Io
                          __pyx_t_344 = __pyx_v_i;
                          __pyx_t_345 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_344, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_345, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5281:                                                     Col[i, j, 2] = red
                          __pyx_t_346 = __pyx_v_i;
                          __pyx_t_347 = __pyx_v_j;
                          __pyx_t_348 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_346, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_347, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_348, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5282:                                                     Col[i, j, 1] = green
                          __pyx_t_349 = __pyx_v_i;
                          __pyx_t_350 = __pyx_v_j;
                          __pyx_t_351 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_349, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_350, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_351, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5283:                                                     Col[i, j, 0] = blue
                          __pyx_t_352 = __pyx_v_i;
                          __pyx_t_353 = __pyx_v_j;
                          __pyx_t_354 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_352, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_353, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_354, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5284:                                                     a[k] = 1
                          __pyx_t_355 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_355, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5285:                                                     break
                          goto __pyx_L105_break;
 5286: 
 5287: 
+5288:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5289:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_356 = (__pyx_v_i + 1);
                        __pyx_t_357 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_356, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_357, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5290:                                                     I[i, j] = Io
                          __pyx_t_358 = __pyx_v_i;
                          __pyx_t_359 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_358, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_359, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5291:                                                     Col[i, j, 2] = red
                          __pyx_t_360 = __pyx_v_i;
                          __pyx_t_361 = __pyx_v_j;
                          __pyx_t_362 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_360, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_361, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_362, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5292:                                                     Col[i, j, 1] = green
                          __pyx_t_363 = __pyx_v_i;
                          __pyx_t_364 = __pyx_v_j;
                          __pyx_t_365 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_363, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_364, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_365, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5293:                                                     Col[i, j, 0] = blue
                          __pyx_t_366 = __pyx_v_i;
                          __pyx_t_367 = __pyx_v_j;
                          __pyx_t_368 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_366, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_367, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_368, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5294:                                                     a[k] = 1
                          __pyx_t_369 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_369, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5295:                                                     break
                          goto __pyx_L105_break;
 5296: 
 5297: 
 5298: 
 5299:                             # INWARD
+5300:                             for i in range(imax, io - 1, -1):
              __pyx_t_119 = (__pyx_v_io - 1);
              for (__pyx_t_118 = __pyx_v_imax; __pyx_t_118 > __pyx_t_119; __pyx_t_118-=1) {
                __pyx_v_i = __pyx_t_118;
+5301:                                 for j in range(jo, jmax + 1):
                __pyx_t_136 = (__pyx_v_jmax + 1);
                for (__pyx_t_135 = __pyx_v_jo; __pyx_t_135 < __pyx_t_136; __pyx_t_135+=1) {
                  __pyx_v_j = __pyx_t_135;
+5302:                                     for dum in range(1):
                  for (__pyx_t_137 = 0; __pyx_t_137 < 1; __pyx_t_137+=1) {
                    __pyx_v_dum = __pyx_t_137;
+5303:                                         if II[i, j] == Io:
                    __pyx_t_370 = __pyx_v_i;
                    __pyx_t_371 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_370, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_371, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L120_break:;
                }
+5304:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5305:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_372 = (__pyx_v_i - 1);
                        __pyx_t_373 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_372, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_373, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5306:                                                     I[i, j] = Io
                          __pyx_t_374 = __pyx_v_i;
                          __pyx_t_375 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_374, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_375, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5307:                                                     Col[i, j, 2] = red
                          __pyx_t_376 = __pyx_v_i;
                          __pyx_t_377 = __pyx_v_j;
                          __pyx_t_378 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_376, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_377, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_378, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5308:                                                     Col[i, j, 1] = green
                          __pyx_t_379 = __pyx_v_i;
                          __pyx_t_380 = __pyx_v_j;
                          __pyx_t_381 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_379, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_380, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_381, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5309:                                                     Col[i, j, 0] = blue
                          __pyx_t_382 = __pyx_v_i;
                          __pyx_t_383 = __pyx_v_j;
                          __pyx_t_384 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_382, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_383, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_384, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5310:                                                     a[k] = 1
                          __pyx_t_385 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_385, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5311:                                                     break
                          goto __pyx_L120_break;
+5312:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5313:                                                 if I[i, j - 1] == Io:
                        __pyx_t_386 = __pyx_v_i;
                        __pyx_t_387 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_386, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_387, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5314:                                                     I[i, j] = Io
                          __pyx_t_388 = __pyx_v_i;
                          __pyx_t_389 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_388, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_389, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5315:                                                     Col[i, j, 2] = red
                          __pyx_t_390 = __pyx_v_i;
                          __pyx_t_391 = __pyx_v_j;
                          __pyx_t_392 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_390, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_391, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_392, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5316:                                                     Col[i, j, 1] = green
                          __pyx_t_393 = __pyx_v_i;
                          __pyx_t_394 = __pyx_v_j;
                          __pyx_t_395 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_393, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_394, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_395, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5317:                                                     Col[i, j, 0] = blue
                          __pyx_t_396 = __pyx_v_i;
                          __pyx_t_397 = __pyx_v_j;
                          __pyx_t_398 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_396, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_397, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_398, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5318:                                                     a[k] = 1
                          __pyx_t_399 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_399, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5319:                                                     break
                          goto __pyx_L120_break;
 5320: 
+5321:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5322:                                                 if I[i, j + 1] == Io:
                        __pyx_t_400 = __pyx_v_i;
                        __pyx_t_401 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_400, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_401, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5323:                                                     I[i, j] = Io
                          __pyx_t_402 = __pyx_v_i;
                          __pyx_t_403 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_402, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_403, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5324:                                                     Col[i, j, 2] = red
                          __pyx_t_404 = __pyx_v_i;
                          __pyx_t_405 = __pyx_v_j;
                          __pyx_t_406 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_404, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_405, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_406, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5325:                                                     Col[i, j, 1] = green
                          __pyx_t_407 = __pyx_v_i;
                          __pyx_t_408 = __pyx_v_j;
                          __pyx_t_409 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_407, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_408, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_409, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5326:                                                     Col[i, j, 0] = blue
                          __pyx_t_410 = __pyx_v_i;
                          __pyx_t_411 = __pyx_v_j;
                          __pyx_t_412 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_410, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_411, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_412, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5327:                                                     a[k] = 1
                          __pyx_t_413 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_413, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5328:                                                     break
                          goto __pyx_L120_break;
 5329: 
 5330: 
+5331:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5332:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_414 = (__pyx_v_i + 1);
                        __pyx_t_415 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_414, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_415, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5333:                                                     I[i, j] = Io
                          __pyx_t_416 = __pyx_v_i;
                          __pyx_t_417 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_416, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_417, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5334:                                                     Col[i, j, 2] = red
                          __pyx_t_418 = __pyx_v_i;
                          __pyx_t_419 = __pyx_v_j;
                          __pyx_t_420 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_418, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_419, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_420, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5335:                                                     Col[i, j, 1] = green
                          __pyx_t_421 = __pyx_v_i;
                          __pyx_t_422 = __pyx_v_j;
                          __pyx_t_423 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_421, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_422, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_423, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5336:                                                     Col[i, j, 0] = blue
                          __pyx_t_424 = __pyx_v_i;
                          __pyx_t_425 = __pyx_v_j;
                          __pyx_t_426 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_424, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_425, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_426, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5337:                                                     a[k] = 1
                          __pyx_t_427 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_427, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5338:                                                     break
                          goto __pyx_L120_break;
 5339: 
+5340:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_136 = (__pyx_v_jmin - 1);
                for (__pyx_t_135 = (__pyx_v_jo - 1); __pyx_t_135 > __pyx_t_136; __pyx_t_135-=1) {
                  __pyx_v_j = __pyx_t_135;
+5341:                                     for dum in range(1):
                  for (__pyx_t_137 = 0; __pyx_t_137 < 1; __pyx_t_137+=1) {
                    __pyx_v_dum = __pyx_t_137;
+5342:                                         if II[i, j] == Io:
                    __pyx_t_428 = __pyx_v_i;
                    __pyx_t_429 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_428, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_429, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L133_break:;
                }
              }
+5343:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5344:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_430 = (__pyx_v_i - 1);
                        __pyx_t_431 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_430, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_431, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5345:                                                     I[i, j] = Io
                          __pyx_t_432 = __pyx_v_i;
                          __pyx_t_433 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_432, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_433, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5346:                                                     Col[i, j, 2] = red
                          __pyx_t_434 = __pyx_v_i;
                          __pyx_t_435 = __pyx_v_j;
                          __pyx_t_436 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_434, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_435, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_436, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5347:                                                     Col[i, j, 1] = green
                          __pyx_t_437 = __pyx_v_i;
                          __pyx_t_438 = __pyx_v_j;
                          __pyx_t_439 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_437, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_438, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_439, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5348:                                                     Col[i, j, 0] = blue
                          __pyx_t_440 = __pyx_v_i;
                          __pyx_t_441 = __pyx_v_j;
                          __pyx_t_442 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_440, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_441, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_442, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5349:                                                     a[k] = 1
                          __pyx_t_443 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_443, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5350:                                                     break
                          goto __pyx_L133_break;
+5351:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5352:                                                 if I[i, j - 1] == Io:
                        __pyx_t_444 = __pyx_v_i;
                        __pyx_t_445 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_444, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_445, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5353:                                                     I[i, j] = Io
                          __pyx_t_446 = __pyx_v_i;
                          __pyx_t_447 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_446, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_447, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5354:                                                     Col[i, j, 2] = red
                          __pyx_t_448 = __pyx_v_i;
                          __pyx_t_449 = __pyx_v_j;
                          __pyx_t_450 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_448, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_449, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_450, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5355:                                                     Col[i, j, 1] = green
                          __pyx_t_451 = __pyx_v_i;
                          __pyx_t_452 = __pyx_v_j;
                          __pyx_t_453 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_451, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_452, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_453, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5356:                                                     Col[i, j, 0] = blue
                          __pyx_t_454 = __pyx_v_i;
                          __pyx_t_455 = __pyx_v_j;
                          __pyx_t_456 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_454, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_455, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_456, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5357:                                                     a[k] = 1
                          __pyx_t_457 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_457, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5358:                                                     break
                          goto __pyx_L133_break;
 5359: 
+5360:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5361:                                                 if I[i, j + 1] == Io:
                        __pyx_t_458 = __pyx_v_i;
                        __pyx_t_459 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_458, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_459, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5362:                                                     I[i, j] = Io
                          __pyx_t_460 = __pyx_v_i;
                          __pyx_t_461 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_460, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_461, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5363:                                                     Col[i, j, 2] = red
                          __pyx_t_462 = __pyx_v_i;
                          __pyx_t_463 = __pyx_v_j;
                          __pyx_t_464 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_462, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_463, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_464, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5364:                                                     Col[i, j, 1] = green
                          __pyx_t_465 = __pyx_v_i;
                          __pyx_t_466 = __pyx_v_j;
                          __pyx_t_467 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_465, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_466, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_467, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5365:                                                     Col[i, j, 0] = blue
                          __pyx_t_468 = __pyx_v_i;
                          __pyx_t_469 = __pyx_v_j;
                          __pyx_t_470 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_468, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_469, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_470, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5366:                                                     a[k] = 1
                          __pyx_t_471 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_471, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5367:                                                     break
                          goto __pyx_L133_break;
 5368: 
 5369: 
+5370:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5371:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_472 = (__pyx_v_i + 1);
                        __pyx_t_473 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_472, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_473, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5372:                                                     I[i, j] = Io
                          __pyx_t_474 = __pyx_v_i;
                          __pyx_t_475 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_474, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_475, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5373:                                                     Col[i, j, 2] = red
                          __pyx_t_476 = __pyx_v_i;
                          __pyx_t_477 = __pyx_v_j;
                          __pyx_t_478 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_476, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_477, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_478, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5374:                                                     Col[i, j, 1] = green
                          __pyx_t_479 = __pyx_v_i;
                          __pyx_t_480 = __pyx_v_j;
                          __pyx_t_481 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_479, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_480, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_481, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5375:                                                     Col[i, j, 0] = blue
                          __pyx_t_482 = __pyx_v_i;
                          __pyx_t_483 = __pyx_v_j;
                          __pyx_t_484 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_482, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_483, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_484, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5376:                                                     a[k] = 1
                          __pyx_t_485 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_485, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5377:                                                     break
                          goto __pyx_L133_break;
 5378: 
 5379: 
 5380: 
+5381:                             for i in range(imin, io, -1):
              __pyx_t_119 = __pyx_v_io;
              for (__pyx_t_118 = __pyx_v_imin; __pyx_t_118 > __pyx_t_119; __pyx_t_118-=1) {
                __pyx_v_i = __pyx_t_118;
+5382:                                 for j in range(jo, jmax + 1):
                __pyx_t_136 = (__pyx_v_jmax + 1);
                for (__pyx_t_135 = __pyx_v_jo; __pyx_t_135 < __pyx_t_136; __pyx_t_135+=1) {
                  __pyx_v_j = __pyx_t_135;
+5383:                                     for dum in range(1):
                  for (__pyx_t_137 = 0; __pyx_t_137 < 1; __pyx_t_137+=1) {
                    __pyx_v_dum = __pyx_t_137;
+5384:                                         if II[i, j] == Io:
                    __pyx_t_486 = __pyx_v_i;
                    __pyx_t_487 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_486, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_487, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L148_break:;
                }
+5385:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5386:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_488 = (__pyx_v_i - 1);
                        __pyx_t_489 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_488, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_489, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5387:                                                     I[i, j] = Io
                          __pyx_t_490 = __pyx_v_i;
                          __pyx_t_491 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_490, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_491, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5388:                                                     Col[i, j, 2] = red
                          __pyx_t_492 = __pyx_v_i;
                          __pyx_t_493 = __pyx_v_j;
                          __pyx_t_494 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_492, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_493, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_494, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5389:                                                     Col[i, j, 1] = green
                          __pyx_t_495 = __pyx_v_i;
                          __pyx_t_496 = __pyx_v_j;
                          __pyx_t_497 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_495, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_496, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_497, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5390:                                                     Col[i, j, 0] = blue
                          __pyx_t_498 = __pyx_v_i;
                          __pyx_t_499 = __pyx_v_j;
                          __pyx_t_500 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_498, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_499, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_500, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5391:                                                     a[k] = 1
                          __pyx_t_501 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_501, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5392:                                                     break
                          goto __pyx_L148_break;
+5393:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5394:                                                 if I[i, j - 1] == Io:
                        __pyx_t_502 = __pyx_v_i;
                        __pyx_t_503 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_502, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_503, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5395:                                                     I[i, j] = Io
                          __pyx_t_504 = __pyx_v_i;
                          __pyx_t_505 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_504, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_505, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5396:                                                     Col[i, j, 2] = red
                          __pyx_t_506 = __pyx_v_i;
                          __pyx_t_507 = __pyx_v_j;
                          __pyx_t_508 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_506, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_507, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_508, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5397:                                                     Col[i, j, 1] = green
                          __pyx_t_509 = __pyx_v_i;
                          __pyx_t_510 = __pyx_v_j;
                          __pyx_t_511 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_509, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_510, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_511, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5398:                                                     Col[i, j, 0] = blue
                          __pyx_t_512 = __pyx_v_i;
                          __pyx_t_513 = __pyx_v_j;
                          __pyx_t_514 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_512, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_513, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_514, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5399:                                                     a[k] = 1
                          __pyx_t_515 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_515, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5400:                                                     break
                          goto __pyx_L148_break;
 5401: 
+5402:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5403:                                                 if I[i, j + 1] == Io:
                        __pyx_t_516 = __pyx_v_i;
                        __pyx_t_517 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_516, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_517, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5404:                                                     I[i, j] = Io
                          __pyx_t_518 = __pyx_v_i;
                          __pyx_t_519 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_518, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_519, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5405:                                                     Col[i, j, 2] = red
                          __pyx_t_520 = __pyx_v_i;
                          __pyx_t_521 = __pyx_v_j;
                          __pyx_t_522 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_520, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_521, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_522, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5406:                                                     Col[i, j, 1] = green
                          __pyx_t_523 = __pyx_v_i;
                          __pyx_t_524 = __pyx_v_j;
                          __pyx_t_525 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_523, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_524, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_525, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5407:                                                     Col[i, j, 0] = blue
                          __pyx_t_526 = __pyx_v_i;
                          __pyx_t_527 = __pyx_v_j;
                          __pyx_t_528 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_526, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_527, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_528, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5408:                                                     a[k] = 1
                          __pyx_t_529 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_529, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5409:                                                     break
                          goto __pyx_L148_break;
 5410: 
 5411: 
+5412:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5413:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_530 = (__pyx_v_i + 1);
                        __pyx_t_531 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_530, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_531, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5414:                                                     I[i, j] = Io
                          __pyx_t_532 = __pyx_v_i;
                          __pyx_t_533 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_532, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_533, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5415:                                                     Col[i, j, 2] = red
                          __pyx_t_534 = __pyx_v_i;
                          __pyx_t_535 = __pyx_v_j;
                          __pyx_t_536 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_534, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_535, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_536, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5416:                                                     Col[i, j, 1] = green
                          __pyx_t_537 = __pyx_v_i;
                          __pyx_t_538 = __pyx_v_j;
                          __pyx_t_539 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_537, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_538, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_539, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5417:                                                     Col[i, j, 0] = blue
                          __pyx_t_540 = __pyx_v_i;
                          __pyx_t_541 = __pyx_v_j;
                          __pyx_t_542 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_540, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_541, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_542, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5418:                                                     a[k] = 1
                          __pyx_t_543 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_543, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5419:                                                     break
                          goto __pyx_L148_break;
 5420: 
+5421:                                 for j in range(jo - 1, jmin - 1, -1):
                __pyx_t_136 = (__pyx_v_jmin - 1);
                for (__pyx_t_135 = (__pyx_v_jo - 1); __pyx_t_135 > __pyx_t_136; __pyx_t_135-=1) {
                  __pyx_v_j = __pyx_t_135;
+5422:                                     for dum in range(1):
                  for (__pyx_t_137 = 0; __pyx_t_137 < 1; __pyx_t_137+=1) {
                    __pyx_v_dum = __pyx_t_137;
+5423:                                         if II[i, j] == Io:
                    __pyx_t_544 = __pyx_v_i;
                    __pyx_t_545 = __pyx_v_j;
                    __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_544, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_545, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L161_break:;
                }
              }
+5424:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5425:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_546 = (__pyx_v_i - 1);
                        __pyx_t_547 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_546, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_547, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5426:                                                     I[i, j] = Io
                          __pyx_t_548 = __pyx_v_i;
                          __pyx_t_549 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_548, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_549, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5427:                                                     Col[i, j, 2] = red
                          __pyx_t_550 = __pyx_v_i;
                          __pyx_t_551 = __pyx_v_j;
                          __pyx_t_552 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_550, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_551, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_552, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5428:                                                     Col[i, j, 1] = green
                          __pyx_t_553 = __pyx_v_i;
                          __pyx_t_554 = __pyx_v_j;
                          __pyx_t_555 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_553, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_554, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_555, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5429:                                                     Col[i, j, 0] = blue
                          __pyx_t_556 = __pyx_v_i;
                          __pyx_t_557 = __pyx_v_j;
                          __pyx_t_558 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_556, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_557, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_558, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5430:                                                     a[k] = 1
                          __pyx_t_559 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_559, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5431:                                                     break
                          goto __pyx_L161_break;
+5432:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5433:                                                 if I[i, j - 1] == Io:
                        __pyx_t_560 = __pyx_v_i;
                        __pyx_t_561 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_560, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_561, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5434:                                                     I[i, j] = Io
                          __pyx_t_562 = __pyx_v_i;
                          __pyx_t_563 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_562, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_563, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5435:                                                     Col[i, j, 2] = red
                          __pyx_t_564 = __pyx_v_i;
                          __pyx_t_565 = __pyx_v_j;
                          __pyx_t_566 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_564, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_565, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_566, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5436:                                                     Col[i, j, 1] = green
                          __pyx_t_567 = __pyx_v_i;
                          __pyx_t_568 = __pyx_v_j;
                          __pyx_t_569 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_567, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_568, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_569, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5437:                                                     Col[i, j, 0] = blue
                          __pyx_t_570 = __pyx_v_i;
                          __pyx_t_571 = __pyx_v_j;
                          __pyx_t_572 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_570, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_571, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_572, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5438:                                                     a[k] = 1
                          __pyx_t_573 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_573, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5439:                                                     break
                          goto __pyx_L161_break;
 5440: 
+5441:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5442:                                                 if I[i, j + 1] == Io:
                        __pyx_t_574 = __pyx_v_i;
                        __pyx_t_575 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_574, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_575, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5443:                                                     I[i, j] = Io
                          __pyx_t_576 = __pyx_v_i;
                          __pyx_t_577 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_576, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_577, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5444:                                                     Col[i, j, 2] = red
                          __pyx_t_578 = __pyx_v_i;
                          __pyx_t_579 = __pyx_v_j;
                          __pyx_t_580 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_578, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_579, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_580, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5445:                                                     Col[i, j, 1] = green
                          __pyx_t_581 = __pyx_v_i;
                          __pyx_t_582 = __pyx_v_j;
                          __pyx_t_583 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_581, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_582, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_583, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5446:                                                     Col[i, j, 0] = blue
                          __pyx_t_584 = __pyx_v_i;
                          __pyx_t_585 = __pyx_v_j;
                          __pyx_t_586 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_584, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_585, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_586, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5447:                                                     a[k] = 1
                          __pyx_t_587 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_587, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5448:                                                     break
                          goto __pyx_L161_break;
 5449: 
 5450: 
+5451:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5452:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_588 = (__pyx_v_i + 1);
                        __pyx_t_589 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_588, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_589, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5453:                                                     I[i, j] = Io
                          __pyx_t_590 = __pyx_v_i;
                          __pyx_t_591 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_590, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_591, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5454:                                                     Col[i, j, 2] = red
                          __pyx_t_592 = __pyx_v_i;
                          __pyx_t_593 = __pyx_v_j;
                          __pyx_t_594 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_592, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_593, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_594, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5455:                                                     Col[i, j, 1] = green
                          __pyx_t_595 = __pyx_v_i;
                          __pyx_t_596 = __pyx_v_j;
                          __pyx_t_597 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_595, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_596, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_597, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5456:                                                     Col[i, j, 0] = blue
                          __pyx_t_598 = __pyx_v_i;
                          __pyx_t_599 = __pyx_v_j;
                          __pyx_t_600 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_598, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_599, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_600, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5457:                                                     a[k] = 1
                          __pyx_t_601 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_601, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5458:                                                     break
                          goto __pyx_L161_break;
 5459: 
+5460:                     if a[k] == 0:
          __pyx_t_119 = __pyx_v_k;
          __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_23) {
/* … */
          }
+5461:                         xmin = max(0, xo - MAJceil)
            __pyx_t_118 = (__pyx_v_xo - __pyx_v_MAJceil);
            __pyx_t_602 = 0;
            if (((__pyx_t_118 > __pyx_t_602) != 0)) {
              __pyx_t_136 = __pyx_t_118;
            } else {
              __pyx_t_136 = __pyx_t_602;
            }
            __pyx_v_xmin = __pyx_t_136;
+5462:                         xmax = min(m - 1, xo + MAJceil)
            __pyx_t_136 = (__pyx_v_xo + __pyx_v_MAJceil);
            __pyx_t_118 = (__pyx_v_m - 1);
            if (((__pyx_t_136 < __pyx_t_118) != 0)) {
              __pyx_t_135 = __pyx_t_136;
            } else {
              __pyx_t_135 = __pyx_t_118;
            }
            __pyx_v_xmax = __pyx_t_135;
+5463:                         ymin = max(0, yo - MINceil)
            __pyx_t_135 = (__pyx_v_yo - __pyx_v_MINceil);
            __pyx_t_602 = 0;
            if (((__pyx_t_135 > __pyx_t_602) != 0)) {
              __pyx_t_136 = __pyx_t_135;
            } else {
              __pyx_t_136 = __pyx_t_602;
            }
            __pyx_v_ymin = __pyx_t_136;
+5464:                         ymax = min(n - 1, yo + MINceil)
            __pyx_t_136 = (__pyx_v_yo + __pyx_v_MINceil);
            __pyx_t_135 = (__pyx_v_n - 1);
            if (((__pyx_t_136 < __pyx_t_135) != 0)) {
              __pyx_t_118 = __pyx_t_136;
            } else {
              __pyx_t_118 = __pyx_t_135;
            }
            __pyx_v_ymax = __pyx_t_118;
+5465:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_118 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 5466: 
 5467: 
 5468: 
 5469: 
+5470:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+5471:             countim = countim + 1
      __pyx_v_countim = (__pyx_v_countim + 1);
    }
+5472:         if asy == 0:
    __pyx_t_23 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_23) {
/* … */
    }
+5473:             break
      goto __pyx_L12_break;
 5474:         else:
+5475:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_27 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_27); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5475, __pyx_L1_error)
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_all); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5475, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      __pyx_t_27 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_27)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_27);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (__pyx_t_27) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5475, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      } else {
        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5475, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5475, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 5475, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_23) {
/* … */
      }
+5476:                 break
        goto __pyx_L12_break;
 5477:             else:
+5478:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5478, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+5479:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_61 = PyTuple_New(2); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_61, 1, __pyx_t_27);
        __pyx_t_7 = 0;
        __pyx_t_27 = 0;
        __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_61);
        __pyx_t_61 = 0;
        __pyx_t_61 = PyDict_New(); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (PyDict_SetItem(__pyx_t_61, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_27, __pyx_t_61); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5479, __pyx_L1_error)
        __pyx_t_8 = ((PyArrayObject *)__pyx_t_6);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5479, __pyx_L1_error)
        }
        __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;
+5480:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_61 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ones); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 5480, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_27, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5480, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5480, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
+5481:                 MAJ = np.zeros(p, dtype=np.float64)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5481, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5481, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5481, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_27 = PyTuple_New(1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5481, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5481, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_61 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5481, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_61, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5481, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 5481, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_27, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5481, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5481, __pyx_L1_error)
        __pyx_t_16 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_v_MAJ, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5481, __pyx_L1_error)
        }
        __pyx_t_16 = 0;
        __Pyx_DECREF_SET(__pyx_v_MAJ, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+5482:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5482, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_centroids); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5482, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5482, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5482, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_61 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5482, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_1 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_27);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_27, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_4 = PyTuple_New(4+__pyx_t_26); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5482, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (__pyx_t_1) {
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_26, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_26, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_26, __pyx_t_61);
        __pyx_t_7 = 0;
        __pyx_t_6 = 0;
        __pyx_t_61 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5482, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
          PyObject* sequence = __pyx_t_5;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 5482, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_27 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_27 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_27);
          __Pyx_INCREF(__pyx_t_4);
          #else
          __pyx_t_27 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5482, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5482, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_61 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5482, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_24 = Py_TYPE(__pyx_t_61)->tp_iternext;
          index = 0; __pyx_t_27 = __pyx_t_24(__pyx_t_61); if (unlikely(!__pyx_t_27)) goto __pyx_L174_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_27);
          index = 1; __pyx_t_4 = __pyx_t_24(__pyx_t_61); if (unlikely(!__pyx_t_4)) goto __pyx_L174_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_4);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_61), 2) < 0) __PYX_ERR(0, 5482, __pyx_L1_error)
          __pyx_t_24 = NULL;
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          goto __pyx_L175_unpacking_done;
          __pyx_L174_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_24 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 5482, __pyx_L1_error)
          __pyx_L175_unpacking_done:;
        }
        if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5482, __pyx_L1_error)
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5482, __pyx_L1_error)
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_27);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5482, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_27));
        __pyx_t_27 = 0;
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5482, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
+5483:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 5484: 
+5485:     toc = time.time()
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_time); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_27);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_27);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_27, function);
    }
  }
  if (__pyx_t_4) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5485, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5485, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5485, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_toc = __pyx_t_22;
+5486:     obj.exetime = toc - tic
  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_5) < 0) __PYX_ERR(0, 5486, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+5487:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 5487, __pyx_L1_error)
+5488:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 5488, __pyx_L1_error)
+5489:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 5489, __pyx_L1_error)
+5490:     obj.RVal = RVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_RVal, ((PyObject *)__pyx_v_RVal)) < 0) __PYX_ERR(0, 5490, __pyx_L1_error)
+5491:     obj.adotVal = adotVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_adotVal, ((PyObject *)__pyx_v_adotVal)) < 0) __PYX_ERR(0, 5491, __pyx_L1_error)
+5492:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 5492, __pyx_L1_error)
+5493:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 5494: 
+5495: def Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_43Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_43Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot = {"Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot", (PyCFunction)__pyx_pw_9libEVOLVE_43Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_43Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_42Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_42Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  int __pyx_v_seq;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Adotfunc = NULL;
  PyObject *__pyx_v_Thetafunc = NULL;
  PyObject *__pyx_v_Rfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_delX;
  PY_LONG_LONG __pyx_v_delY;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_MAJceil;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_MINceil;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_MIN;
  float __pyx_v_theta;
  float __pyx_v_c;
  float __pyx_v_s;
  float __pyx_v_dr;
  float __pyx_v_tmp;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Theta = 0;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_adotVal = 0;
  PyArrayObject *__pyx_v_Rval = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  double __pyx_v_adotValmax;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Rval;
  __Pyx_Buffer __pyx_pybuffer_Rval;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Theta;
  __Pyx_Buffer __pyx_pybuffer_Theta;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_adotVal;
  __Pyx_Buffer __pyx_pybuffer_adotVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Theta.pybuffer.buf = NULL;
  __pyx_pybuffer_Theta.refcount = 0;
  __pyx_pybuffernd_Theta.data = NULL;
  __pyx_pybuffernd_Theta.rcbuffer = &__pyx_pybuffer_Theta;
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_adotVal.pybuffer.buf = NULL;
  __pyx_pybuffer_adotVal.refcount = 0;
  __pyx_pybuffernd_adotVal.data = NULL;
  __pyx_pybuffernd_adotVal.rcbuffer = &__pyx_pybuffer_adotVal;
  __pyx_pybuffer_Rval.pybuffer.buf = NULL;
  __pyx_pybuffer_Rval.refcount = 0;
  __pyx_pybuffernd_Rval.data = NULL;
  __pyx_pybuffernd_Rval.rcbuffer = &__pyx_pybuffer_Rval;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_27);
  __Pyx_XDECREF(__pyx_t_61);
  __Pyx_XDECREF(__pyx_t_67);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Adotfunc);
  __Pyx_XDECREF(__pyx_v_Thetafunc);
  __Pyx_XDECREF(__pyx_v_Rfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Theta);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_adotVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_Rval);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__53 = PyTuple_Pack(64, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_seq, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Adotfunc, __pyx_n_s_Thetafunc, __pyx_n_s_Rfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_MN, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_dum, __pyx_n_s_countim, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_delX, __pyx_n_s_delY, __pyx_n_s_MAJceil, __pyx_n_s_MINceil, __pyx_n_s_Iter, __pyx_n_s_MIN, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_dr, __pyx_n_s_tmp, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Theta, __pyx_n_s_MAJ, __pyx_n_s_adotVal, __pyx_n_s_Rval, __pyx_n_s_Col, __pyx_n_s_col, __pyx_n_s_adotValmax); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 5495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__53);
  __Pyx_GIVEREF(__pyx_tuple__53);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_43Evolve_2D_Anisotropic_SiteSaturated_Generic_Elliptical_with_aspect_with_theta_with_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_12, __pyx_t_2) < 0) __PYX_ERR(0, 5495, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(1, 0, 64, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_12, 5495, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 5495, __pyx_L1_error)
 5496: 
 5497:     # Grabbing data from the input object
+5498:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5498, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+5499:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5499, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+5500:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5500, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+5501:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5501, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+5502:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5502, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+5503:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5503, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+5504:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5504, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_3;
+5505:     cdef int seq = obj.seq
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_seq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5505, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_seq = __pyx_t_3;
+5506:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5506, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_3;
+5507:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5507, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_3;
+5508:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+5509:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+5510:     Adotfunc = obj.Adotfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Adotfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Adotfunc = __pyx_t_1;
  __pyx_t_1 = 0;
+5511:     Thetafunc = obj.Thetafunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Thetafunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Thetafunc = __pyx_t_1;
  __pyx_t_1 = 0;
+5512:     Rfunc = obj.Rfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Rfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Rfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 5513: 
 5514:     # Declaring other variables
 5515:     cdef double tic, toc
 5516:     cdef long long deli, delj, MN, PN, PE, PW, PS, Io, win, xmin, xmax, ymin, ymax, dum, countim, i, j, k, xo, yo, delX, delY, MAJceil, MINceil, Iter
 5517:     cdef float MIN, theta, c, s, dr, tmp, red, green, blue
+5518:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5518, __pyx_L1_error)
  __pyx_t_8 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5518, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_8 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+5519:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5519, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5519, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+5520:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 5520, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5520, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5520, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+5521:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 5521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5521, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5521, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+5522:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5522, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5522, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+5523:     cdef np.ndarray[np.float64_t, ndim = 1] Theta = np.zeros(p, dtype=np.float64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5523, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Theta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5523, __pyx_L1_error)
    } else {__pyx_pybuffernd_Theta.diminfo[0].strides = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Theta.diminfo[0].shape = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_Theta = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+5524:     cdef np.ndarray[np.float64_t, ndim = 1] MAJ = np.zeros(p, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 5524, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5524, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5524, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+5525:     cdef np.ndarray[np.float64_t, ndim = 1] adotVal = np.zeros(p, dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 5525, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5525, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_adotVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5525, __pyx_L1_error)
    } else {__pyx_pybuffernd_adotVal.diminfo[0].strides = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_adotVal.diminfo[0].shape = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_adotVal = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+5526:     cdef np.ndarray[np.float64_t, ndim = 1] Rval = np.zeros(p, dtype=np.float64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 5526, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5526, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Rval = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5526, __pyx_L1_error)
    } else {__pyx_pybuffernd_Rval.diminfo[0].strides = __pyx_pybuffernd_Rval.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Rval.diminfo[0].shape = __pyx_pybuffernd_Rval.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Rval = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+5527:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5527, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5527, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+5528:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 5528, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5528, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 5528, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+5529:     plantseed(myseed)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5529, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+5530:     col = np.random.random((p, 3))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5530, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5530, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5530, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5530, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_4);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5530, __pyx_L1_error)
  }
  __pyx_t_18 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_4));
  __pyx_t_4 = 0;
+5531:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_5) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5531, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5531, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5531, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_tic = __pyx_t_22;
 5532: 
 5533: 
+5534:     if pdelNxy == []:
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5534, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 5534, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_23) {
/* … */
    goto __pyx_L3;
  }
+5535:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_7 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 5535, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_1)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_24(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_5 = __pyx_t_24(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_1), 2) < 0) __PYX_ERR(0, 5535, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 5535, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5535, __pyx_L1_error)
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5535, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5535, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_5);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5535, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_5));
    __pyx_t_5 = 0;
 5536:     else:
+5537:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_25 = NULL;
    __pyx_t_26 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_25)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_25);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_26 = 1;
      }
    }
    __pyx_t_27 = PyTuple_New(7+__pyx_t_26); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    if (__pyx_t_25) {
      __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_25); __pyx_t_25 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_27, 0+__pyx_t_26, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_27, 1+__pyx_t_26, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_27, 2+__pyx_t_26, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_27, 3+__pyx_t_26, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_27, 4+__pyx_t_26, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_27, 5+__pyx_t_26, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_27, 6+__pyx_t_26, __pyx_int_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_27, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 5537, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_27 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_27 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_27);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5537, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_27 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5537, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5537, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_24(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_27 = __pyx_t_24(__pyx_t_6); if (unlikely(!__pyx_t_27)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_27);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_6), 2) < 0) __PYX_ERR(0, 5537, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 5537, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5537, __pyx_L1_error)
    if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5537, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_4);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5537, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_4));
    __pyx_t_4 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_27);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5537, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_27));
    __pyx_t_27 = 0;
  }
  __pyx_L3:;
 5538: 
+5539:     if labelsorted == 1:
  __pyx_t_23 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_23) {
/* … */
  }
+5540:         X, Y = labelsort(n, X, Y)
    __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5540, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_27);
    __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5540, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_26 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_27);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_27, function);
        __pyx_t_26 = 1;
      }
    }
    __pyx_t_1 = PyTuple_New(3+__pyx_t_26); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5540, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_26, __pyx_t_4);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_26, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_26, ((PyObject *)__pyx_v_Y));
    __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5540, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
      PyObject* sequence = __pyx_t_7;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 5540, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_27 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_27 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_27);
      __Pyx_INCREF(__pyx_t_1);
      #else
      __pyx_t_27 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_24 = Py_TYPE(__pyx_t_4)->tp_iternext;
      index = 0; __pyx_t_27 = __pyx_t_24(__pyx_t_4); if (unlikely(!__pyx_t_27)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_27);
      index = 1; __pyx_t_1 = __pyx_t_24(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_4), 2) < 0) __PYX_ERR(0, 5540, __pyx_L1_error)
      __pyx_t_24 = NULL;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_24 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 5540, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5540, __pyx_L1_error)
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 5540, __pyx_L1_error)
    __pyx_t_11 = ((PyArrayObject *)__pyx_t_27);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5540, __pyx_L1_error)
    }
    __pyx_t_11 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_27));
    __pyx_t_27 = 0;
    __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_3 < 0)) {
        PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 5540, __pyx_L1_error)
    }
    __pyx_t_12 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;
 5541: 
+5542:     Iter = 1
  __pyx_v_Iter = 1;
 5543: 
+5544:     while True:
  while (1) {
 5545: 
+5546:         if seq == 1:
    switch (__pyx_v_seq) {
      case 1:
/* … */
      break;
+5547:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+5548:                 I[X[k], Y[k]] = k + 1
        __pyx_t_29 = __pyx_v_k;
        __pyx_t_30 = __pyx_v_k;
        __pyx_t_31 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_32 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_32, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+5549:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_33 = __pyx_v_k;
        __pyx_t_34 = 0;
        __pyx_t_35 = __pyx_v_k;
        __pyx_t_36 = __pyx_v_k;
        __pyx_t_37 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_38 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_39 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_col.diminfo[1].strides));
+5550:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_40 = __pyx_v_k;
        __pyx_t_41 = 1;
        __pyx_t_42 = __pyx_v_k;
        __pyx_t_43 = __pyx_v_k;
        __pyx_t_44 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_45 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_46 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_col.diminfo[1].strides));
+5551:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_47 = __pyx_v_k;
        __pyx_t_48 = 2;
        __pyx_t_49 = __pyx_v_k;
        __pyx_t_50 = __pyx_v_k;
        __pyx_t_51 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_52 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_53 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_52, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_col.diminfo[1].strides));
+5552:                 Theta[k] = Thetafunc(X[k], Y[k], k + 1, 1, 1)
        __pyx_t_54 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_55 = __pyx_v_k;
        __pyx_t_27 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_Thetafunc);
        __pyx_t_6 = __pyx_v_Thetafunc; __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_25 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_26, __pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_26, __pyx_t_4);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_1 = 0;
        __pyx_t_27 = 0;
        __pyx_t_4 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5552, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_57 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_56;
+5553:                 Rval[k] = Rfunc(X[k], Y[k], k + 1, 1, Theta[k])
        __pyx_t_58 = __pyx_v_k;
        __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_59 = __pyx_v_k;
        __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_60 = __pyx_v_k;
        __pyx_t_27 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_INCREF(__pyx_v_Rfunc);
        __pyx_t_1 = __pyx_v_Rfunc; __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_61 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_61, 0+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_61, 1+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_61, 2+__pyx_t_26, __pyx_t_4);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_61, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_61, 4+__pyx_t_26, __pyx_t_27);
        __pyx_t_6 = 0;
        __pyx_t_25 = 0;
        __pyx_t_4 = 0;
        __pyx_t_27 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_61, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5553, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5553, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_62 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_56;
+5554:                 adotVal[k] = Adotfunc(X[k], Y[k], k + 1, Theta[k], Rval[k])
        __pyx_t_63 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_64 = __pyx_v_k;
        __pyx_t_61 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_65 = __pyx_v_k;
        __pyx_t_4 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_66 = __pyx_v_k;
        __pyx_t_25 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_INCREF(__pyx_v_Adotfunc);
        __pyx_t_6 = __pyx_v_Adotfunc; __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_67 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_67)) __PYX_ERR(0, 5554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_67);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_67, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_67, 0+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_67, 1+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_67, 2+__pyx_t_26, __pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_67, 3+__pyx_t_26, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_67, 4+__pyx_t_26, __pyx_t_25);
        __pyx_t_1 = 0;
        __pyx_t_61 = 0;
        __pyx_t_27 = 0;
        __pyx_t_4 = 0;
        __pyx_t_25 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_67, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_67); __pyx_t_67 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5554, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_68 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_56;
      }
 5555: 
+5556:         elif seq == 2:
      case 2:
/* … */
      break;
+5557:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+5558:                 I[X[k], Y[k]] = k + 1
        __pyx_t_69 = __pyx_v_k;
        __pyx_t_70 = __pyx_v_k;
        __pyx_t_71 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_72 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+5559:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_73 = __pyx_v_k;
        __pyx_t_74 = 0;
        __pyx_t_75 = __pyx_v_k;
        __pyx_t_76 = __pyx_v_k;
        __pyx_t_77 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_78 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_79 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_col.diminfo[1].strides));
+5560:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_80 = __pyx_v_k;
        __pyx_t_81 = 1;
        __pyx_t_82 = __pyx_v_k;
        __pyx_t_83 = __pyx_v_k;
        __pyx_t_84 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_85 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_86 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_85, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_86, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_81, __pyx_pybuffernd_col.diminfo[1].strides));
+5561:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_87 = __pyx_v_k;
        __pyx_t_88 = 2;
        __pyx_t_89 = __pyx_v_k;
        __pyx_t_90 = __pyx_v_k;
        __pyx_t_91 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_92 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_93 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_92, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_93, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_88, __pyx_pybuffernd_col.diminfo[1].strides));
+5562:                 Theta[k] = Thetafunc(X[k], Y[k], k + 1, 1, 1)
        __pyx_t_94 = __pyx_v_k;
        __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_95 = __pyx_v_k;
        __pyx_t_67 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_67)) __PYX_ERR(0, 5562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_67);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_INCREF(__pyx_v_Thetafunc);
        __pyx_t_4 = __pyx_v_Thetafunc; __pyx_t_27 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_27)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_27);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_61 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        if (__pyx_t_27) {
          __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_27); __pyx_t_27 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_61, 0+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_67);
        PyTuple_SET_ITEM(__pyx_t_61, 1+__pyx_t_26, __pyx_t_67);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_61, 2+__pyx_t_26, __pyx_t_25);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_61, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_61, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_6 = 0;
        __pyx_t_67 = 0;
        __pyx_t_25 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_61, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5562, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_96 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_56;
+5563:                 adotVal[k] = Adotfunc(X[k], Y[k], k + 1, Theta[k], 1)
        __pyx_t_97 = __pyx_v_k;
        __pyx_t_4 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_98 = __pyx_v_k;
        __pyx_t_61 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_99 = __pyx_v_k;
        __pyx_t_67 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_67)) __PYX_ERR(0, 5563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_67);
        __Pyx_INCREF(__pyx_v_Adotfunc);
        __pyx_t_6 = __pyx_v_Adotfunc; __pyx_t_27 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_27)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_27);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_1 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__pyx_t_27) {
          __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_27); __pyx_t_27 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_26, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_67);
        PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_26, __pyx_t_67);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_4 = 0;
        __pyx_t_61 = 0;
        __pyx_t_25 = 0;
        __pyx_t_67 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5563, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_100 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_100, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_56;
+5564:                 Rval[k] = Rfunc(X[k], Y[k], k + 1, adotVal[k], Theta[k])
        __pyx_t_101 = __pyx_v_k;
        __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5564, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_102 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5564, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_67 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_67)) __PYX_ERR(0, 5564, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_67);
        __pyx_t_103 = __pyx_v_k;
        __pyx_t_25 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5564, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_104 = __pyx_v_k;
        __pyx_t_61 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5564, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_INCREF(__pyx_v_Rfunc);
        __pyx_t_4 = __pyx_v_Rfunc; __pyx_t_27 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_27)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_27);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5564, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_27) {
          __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_27); __pyx_t_27 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_67);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_26, __pyx_t_67);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_26, __pyx_t_61);
        __pyx_t_6 = 0;
        __pyx_t_1 = 0;
        __pyx_t_67 = 0;
        __pyx_t_25 = 0;
        __pyx_t_61 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5564, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5564, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_105 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_56;
      }
 5565: 
+5566:         elif seq == 3:
      case 3:
/* … */
      break;
+5567:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+5568:                 I[X[k], Y[k]] = k + 1
        __pyx_t_106 = __pyx_v_k;
        __pyx_t_107 = __pyx_v_k;
        __pyx_t_108 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_109 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+5569:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_110 = __pyx_v_k;
        __pyx_t_111 = 0;
        __pyx_t_112 = __pyx_v_k;
        __pyx_t_113 = __pyx_v_k;
        __pyx_t_114 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_115 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_116 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_111, __pyx_pybuffernd_col.diminfo[1].strides));
+5570:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_117 = __pyx_v_k;
        __pyx_t_118 = 1;
        __pyx_t_119 = __pyx_v_k;
        __pyx_t_120 = __pyx_v_k;
        __pyx_t_121 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_122 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_123 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_col.diminfo[1].strides));
+5571:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_124 = __pyx_v_k;
        __pyx_t_125 = 2;
        __pyx_t_126 = __pyx_v_k;
        __pyx_t_127 = __pyx_v_k;
        __pyx_t_128 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_129 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_130 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_130, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_col.diminfo[1].strides));
+5572:                 Rval[k] = Rfunc(X[k], Y[k], k + 1, 1, 0)
        __pyx_t_131 = __pyx_v_k;
        __pyx_t_4 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5572, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_132 = __pyx_v_k;
        __pyx_t_5 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5572, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_61 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5572, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_INCREF(__pyx_v_Rfunc);
        __pyx_t_25 = __pyx_v_Rfunc; __pyx_t_67 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_25))) {
          __pyx_t_67 = PyMethod_GET_SELF(__pyx_t_25);
          if (likely(__pyx_t_67)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
            __Pyx_INCREF(__pyx_t_67);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_25, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_1 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5572, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__pyx_t_67) {
          __Pyx_GIVEREF(__pyx_t_67); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_67); __pyx_t_67 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_26, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_26, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_26, __pyx_t_61);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_26, __pyx_int_0);
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        __pyx_t_61 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5572, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5572, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_133 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_56;
+5573:                 Theta[k] = Thetafunc(X[k], Y[k], k + 1, Rval[k], 1)
        __pyx_t_134 = __pyx_v_k;
        __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_135 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_61 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_136 = __pyx_v_k;
        __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_136, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_Thetafunc);
        __pyx_t_4 = __pyx_v_Thetafunc; __pyx_t_67 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_67 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_67)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_67);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_6 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__pyx_t_67) {
          __Pyx_GIVEREF(__pyx_t_67); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_67); __pyx_t_67 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_26, __pyx_t_5);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_25 = 0;
        __pyx_t_1 = 0;
        __pyx_t_61 = 0;
        __pyx_t_5 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5573, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_137 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_56;
+5574:                 adotVal[k] = Adotfunc(X[k], Y[k], k + 1, Theta[k], Rval[k])
        __pyx_t_138 = __pyx_v_k;
        __pyx_t_4 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_138, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5574, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_139 = __pyx_v_k;
        __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_139, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5574, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5574, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_140 = __pyx_v_k;
        __pyx_t_61 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5574, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_141 = __pyx_v_k;
        __pyx_t_1 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_141, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5574, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_Adotfunc);
        __pyx_t_25 = __pyx_v_Adotfunc; __pyx_t_67 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_25))) {
          __pyx_t_67 = PyMethod_GET_SELF(__pyx_t_25);
          if (likely(__pyx_t_67)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
            __Pyx_INCREF(__pyx_t_67);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_25, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_27 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5574, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        if (__pyx_t_67) {
          __Pyx_GIVEREF(__pyx_t_67); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_67); __pyx_t_67 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_27, 0+__pyx_t_26, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_27, 1+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_27, 2+__pyx_t_26, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_27, 3+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_27, 4+__pyx_t_26, __pyx_t_1);
        __pyx_t_4 = 0;
        __pyx_t_6 = 0;
        __pyx_t_5 = 0;
        __pyx_t_61 = 0;
        __pyx_t_1 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_27, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5574, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5574, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_142 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_56;
      }
 5575: 
 5576: 
+5577:         elif seq == 4:
      case 4:
/* … */
      break;
+5578:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+5579:                 I[X[k], Y[k]] = k + 1
        __pyx_t_143 = __pyx_v_k;
        __pyx_t_144 = __pyx_v_k;
        __pyx_t_145 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_146 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_144, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+5580:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_147 = __pyx_v_k;
        __pyx_t_148 = 0;
        __pyx_t_149 = __pyx_v_k;
        __pyx_t_150 = __pyx_v_k;
        __pyx_t_151 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_152 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_153 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_153, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_148, __pyx_pybuffernd_col.diminfo[1].strides));
+5581:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_154 = __pyx_v_k;
        __pyx_t_155 = 1;
        __pyx_t_156 = __pyx_v_k;
        __pyx_t_157 = __pyx_v_k;
        __pyx_t_158 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_159 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_160 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_155, __pyx_pybuffernd_col.diminfo[1].strides));
+5582:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_161 = __pyx_v_k;
        __pyx_t_162 = 2;
        __pyx_t_163 = __pyx_v_k;
        __pyx_t_164 = __pyx_v_k;
        __pyx_t_165 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_166 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_164, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_167 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_161, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_162, __pyx_pybuffernd_col.diminfo[1].strides));
+5583:                 Rval[k] = Rfunc(X[k], Y[k], k + 1, 1, 0)
        __pyx_t_168 = __pyx_v_k;
        __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5583, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_169 = __pyx_v_k;
        __pyx_t_27 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_169, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5583, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5583, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_Rfunc);
        __pyx_t_61 = __pyx_v_Rfunc; __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_61))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_61);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_61);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_61, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_6 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5583, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_26, __pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_26, __pyx_t_1);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_26, __pyx_int_0);
        __pyx_t_25 = 0;
        __pyx_t_27 = 0;
        __pyx_t_1 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5583, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5583, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_170 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_56;
+5584:                 adotVal[k] = Adotfunc(X[k], Y[k], k + 1, 0, Rval[k])
        __pyx_t_171 = __pyx_v_k;
        __pyx_t_61 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_172 = __pyx_v_k;
        __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_172, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_173 = __pyx_v_k;
        __pyx_t_27 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_173, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_INCREF(__pyx_v_Adotfunc);
        __pyx_t_25 = __pyx_v_Adotfunc; __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_25))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_25);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_25, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_4 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_26, __pyx_t_1);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_26, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_4, 4+__pyx_t_26, __pyx_t_27);
        __pyx_t_61 = 0;
        __pyx_t_6 = 0;
        __pyx_t_1 = 0;
        __pyx_t_27 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5584, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_174 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_174, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_56;
+5585:                 Theta[k] = Thetafunc(X[k], Y[k], k + 1, Rval[k], adotVal[k])
        __pyx_t_175 = __pyx_v_k;
        __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5585, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_176 = __pyx_v_k;
        __pyx_t_4 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_176, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5585, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5585, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_177 = __pyx_v_k;
        __pyx_t_1 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5585, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_178 = __pyx_v_k;
        __pyx_t_6 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_178, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5585, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_Thetafunc);
        __pyx_t_61 = __pyx_v_Thetafunc; __pyx_t_5 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_61))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_61);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_61);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_61, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_67 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_67)) __PYX_ERR(0, 5585, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_67);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_67, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_67, 0+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_67, 1+__pyx_t_26, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_67, 2+__pyx_t_26, __pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_67, 3+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_67, 4+__pyx_t_26, __pyx_t_6);
        __pyx_t_25 = 0;
        __pyx_t_4 = 0;
        __pyx_t_27 = 0;
        __pyx_t_1 = 0;
        __pyx_t_6 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_67, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5585, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_67); __pyx_t_67 = 0;
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5585, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_179 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_56;
      }
 5586: 
 5587: 
+5588:         elif seq == 5:
      case 5:
/* … */
      break;
+5589:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+5590:                 I[X[k], Y[k]] = k + 1
        __pyx_t_180 = __pyx_v_k;
        __pyx_t_181 = __pyx_v_k;
        __pyx_t_182 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_180, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_183 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_181, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_183, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+5591:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_184 = __pyx_v_k;
        __pyx_t_185 = 0;
        __pyx_t_186 = __pyx_v_k;
        __pyx_t_187 = __pyx_v_k;
        __pyx_t_188 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_186, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_189 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_190 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_190, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_185, __pyx_pybuffernd_col.diminfo[1].strides));
+5592:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_191 = __pyx_v_k;
        __pyx_t_192 = 1;
        __pyx_t_193 = __pyx_v_k;
        __pyx_t_194 = __pyx_v_k;
        __pyx_t_195 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_193, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_196 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_194, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_197 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_195, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_196, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_197, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_191, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_192, __pyx_pybuffernd_col.diminfo[1].strides));
+5593:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_198 = __pyx_v_k;
        __pyx_t_199 = 2;
        __pyx_t_200 = __pyx_v_k;
        __pyx_t_201 = __pyx_v_k;
        __pyx_t_202 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_200, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_203 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_201, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_204 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_202, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_204, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_199, __pyx_pybuffernd_col.diminfo[1].strides));
+5594:                 adotVal[k] = Adotfunc(X[k], Y[k], k + 1, 0, 1)
        __pyx_t_205 = __pyx_v_k;
        __pyx_t_61 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_205, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5594, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_206 = __pyx_v_k;
        __pyx_t_67 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_206, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_67)) __PYX_ERR(0, 5594, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_67);
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5594, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_Adotfunc);
        __pyx_t_1 = __pyx_v_Adotfunc; __pyx_t_27 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_27)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_27);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_4 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5594, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (__pyx_t_27) {
          __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_27); __pyx_t_27 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_67);
        PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_26, __pyx_t_67);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_26, __pyx_t_6);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_26, __pyx_int_0);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_4, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_61 = 0;
        __pyx_t_67 = 0;
        __pyx_t_6 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5594, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5594, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_207 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_207, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_56;
+5595:                 Theta[k] = Thetafunc(X[k], Y[k], k + 1, 1, adotVal[k])
        __pyx_t_208 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_208, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5595, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_209 = __pyx_v_k;
        __pyx_t_4 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_209, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5595, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5595, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_210 = __pyx_v_k;
        __pyx_t_67 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_210, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_67)) __PYX_ERR(0, 5595, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_67);
        __Pyx_INCREF(__pyx_v_Thetafunc);
        __pyx_t_61 = __pyx_v_Thetafunc; __pyx_t_27 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_61))) {
          __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_61);
          if (likely(__pyx_t_27)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_61);
            __Pyx_INCREF(__pyx_t_27);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_61, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_25 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5595, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        if (__pyx_t_27) {
          __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_27); __pyx_t_27 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_26, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_26, __pyx_t_6);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_26, __pyx_int_1);
        __Pyx_GIVEREF(__pyx_t_67);
        PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_26, __pyx_t_67);
        __pyx_t_1 = 0;
        __pyx_t_4 = 0;
        __pyx_t_6 = 0;
        __pyx_t_67 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5595, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5595, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_211 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_211, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_56;
+5596:                 Rval[k] = Rfunc(X[k], Y[k], k + 1, adotVal[k], Theta[k])
        __pyx_t_212 = __pyx_v_k;
        __pyx_t_61 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_212, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5596, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_213 = __pyx_v_k;
        __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_213, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5596, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_67 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_67)) __PYX_ERR(0, 5596, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_67);
        __pyx_t_214 = __pyx_v_k;
        __pyx_t_6 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_214, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5596, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_215 = __pyx_v_k;
        __pyx_t_4 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_215, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5596, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_Rfunc);
        __pyx_t_1 = __pyx_v_Rfunc; __pyx_t_27 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_27)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_27);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5596, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_27) {
          __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_27); __pyx_t_27 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_67);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_26, __pyx_t_67);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_26, __pyx_t_4);
        __pyx_t_61 = 0;
        __pyx_t_25 = 0;
        __pyx_t_67 = 0;
        __pyx_t_6 = 0;
        __pyx_t_4 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5596, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5596, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_216 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_216, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_56;
      }
 5597: 
+5598:         elif seq == 6:
      case 6:
/* … */
      break;
      default: break;
    }
+5599:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+5600:                 I[X[k], Y[k]] = k + 1
        __pyx_t_217 = __pyx_v_k;
        __pyx_t_218 = __pyx_v_k;
        __pyx_t_219 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_217, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_220 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_218, __pyx_pybuffernd_Y.diminfo[0].strides));
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_219, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_220, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+5601:                 Col[X[k], Y[k], 2] = col[k, 0]
        __pyx_t_221 = __pyx_v_k;
        __pyx_t_222 = 0;
        __pyx_t_223 = __pyx_v_k;
        __pyx_t_224 = __pyx_v_k;
        __pyx_t_225 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_223, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_226 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_224, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_227 = 2;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_225, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_226, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_227, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_221, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_222, __pyx_pybuffernd_col.diminfo[1].strides));
+5602:                 Col[X[k], Y[k], 1] = col[k, 1]
        __pyx_t_228 = __pyx_v_k;
        __pyx_t_229 = 1;
        __pyx_t_230 = __pyx_v_k;
        __pyx_t_231 = __pyx_v_k;
        __pyx_t_232 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_230, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_233 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_231, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_234 = 1;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_232, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_233, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_234, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_228, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_229, __pyx_pybuffernd_col.diminfo[1].strides));
+5603:                 Col[X[k], Y[k], 0] = col[k, 2]
        __pyx_t_235 = __pyx_v_k;
        __pyx_t_236 = 2;
        __pyx_t_237 = __pyx_v_k;
        __pyx_t_238 = __pyx_v_k;
        __pyx_t_239 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_237, __pyx_pybuffernd_X.diminfo[0].strides));
        __pyx_t_240 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_238, __pyx_pybuffernd_Y.diminfo[0].strides));
        __pyx_t_241 = 0;
        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_239, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_240, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_241, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_235, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_236, __pyx_pybuffernd_col.diminfo[1].strides));
+5604:                 adotVal[k] = Adotfunc(X[k], Y[k], k + 1, 0, 1)
        __pyx_t_242 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_242, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5604, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_243 = __pyx_v_k;
        __pyx_t_5 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_243, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5604, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5604, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_v_Adotfunc);
        __pyx_t_6 = __pyx_v_Adotfunc; __pyx_t_67 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_67 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_67)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_67);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_25 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5604, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        if (__pyx_t_67) {
          __Pyx_GIVEREF(__pyx_t_67); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_67); __pyx_t_67 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_26, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_26, __pyx_t_4);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_26, __pyx_int_0);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_26, __pyx_int_1);
        __pyx_t_1 = 0;
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5604, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5604, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_244 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_244, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_56;
+5605:                 Rval[k] = Rfunc(X[k], Y[k], k + 1, adotVal[k], 0)
        __pyx_t_245 = __pyx_v_k;
        __pyx_t_6 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_245, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5605, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_246 = __pyx_v_k;
        __pyx_t_25 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_246, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5605, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5605, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_247 = __pyx_v_k;
        __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_247, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5605, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_Rfunc);
        __pyx_t_1 = __pyx_v_Rfunc; __pyx_t_67 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_67 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_67)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_67);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_61 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5605, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        if (__pyx_t_67) {
          __Pyx_GIVEREF(__pyx_t_67); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_67); __pyx_t_67 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_61, 0+__pyx_t_26, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_61, 1+__pyx_t_26, __pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_61, 2+__pyx_t_26, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_61, 3+__pyx_t_26, __pyx_t_5);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_61, 4+__pyx_t_26, __pyx_int_0);
        __pyx_t_6 = 0;
        __pyx_t_25 = 0;
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_61, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5605, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5605, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_248 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_248, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_56;
+5606:                 Theta[k] = Thetafunc(X[k], Y[k], k + 1, Rval[k], adotVal[k])
        __pyx_t_249 = __pyx_v_k;
        __pyx_t_1 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_249, __pyx_pybuffernd_X.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_250 = __pyx_v_k;
        __pyx_t_61 = __Pyx_PyInt_From_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_250, __pyx_pybuffernd_Y.diminfo[0].strides))); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_k + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_251 = __pyx_v_k;
        __pyx_t_4 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_251, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_252 = __pyx_v_k;
        __pyx_t_25 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_252, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_INCREF(__pyx_v_Thetafunc);
        __pyx_t_6 = __pyx_v_Thetafunc; __pyx_t_67 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_67 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_67)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_67);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_27 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        if (__pyx_t_67) {
          __Pyx_GIVEREF(__pyx_t_67); PyTuple_SET_ITEM(__pyx_t_27, 0, __pyx_t_67); __pyx_t_67 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_27, 0+__pyx_t_26, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_27, 1+__pyx_t_26, __pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_27, 2+__pyx_t_26, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_27, 3+__pyx_t_26, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_27, 4+__pyx_t_26, __pyx_t_25);
        __pyx_t_1 = 0;
        __pyx_t_61 = 0;
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        __pyx_t_25 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_27, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_56 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_56 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 5606, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_253 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_253, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_56;
      }
 5607: 
+5608:         showriteframe(sa, sf, fd, 0, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, 0, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
 5609: 
+5610:         countim = 0
    __pyx_v_countim = 0;
+5611:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_27);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_27);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_27, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_27, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5611, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      } else {
        __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5611, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_25, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5611, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      }
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      __pyx_t_27 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_27); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5611, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_27); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 5611, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
      if (!__pyx_t_23) break;
+5612:             countim = countim + 1
      __pyx_v_countim = (__pyx_v_countim + 1);
+5613:             adotValmax = 0
      __pyx_v_adotValmax = 0.0;
+5614:             for i in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_i = __pyx_t_28;
+5615:                 if a[i] == 1:
        __pyx_t_254 = __pyx_v_i;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_254, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_23) {
/* … */
        }
      }
+5616:                     tmp = adotVal[i]
          __pyx_t_255 = __pyx_v_i;
          __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_255, __pyx_pybuffernd_adotVal.diminfo[0].strides));
+5617:                     if tmp > adotValmax:
          __pyx_t_23 = ((__pyx_v_tmp > __pyx_v_adotValmax) != 0);
          if (__pyx_t_23) {
/* … */
          }
+5618:                         adotValmax = tmp
            __pyx_v_adotValmax = __pyx_v_tmp;
 5619: 
+5620:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_28 = 0; __pyx_t_28 < __pyx_t_2; __pyx_t_28+=1) {
        __pyx_v_k = __pyx_t_28;
+5621:                 if a[k] == 1:
        __pyx_t_256 = __pyx_v_k;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_256, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_23) {
/* … */
        }
      }
+5622:                     a[k] = 0
          __pyx_t_257 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_257, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+5623:                     xo = X[k]
          __pyx_t_258 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_258, __pyx_pybuffernd_X.diminfo[0].strides));
+5624:                     yo = Y[k]
          __pyx_t_259 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_259, __pyx_pybuffernd_Y.diminfo[0].strides));
+5625:                     Io = I[xo, yo]
          __pyx_t_260 = __pyx_v_xo;
          __pyx_t_261 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_260, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_261, __pyx_pybuffernd_I.diminfo[1].strides));
+5626:                     theta = Theta[k]
          __pyx_t_262 = __pyx_v_k;
          __pyx_v_theta = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_262, __pyx_pybuffernd_Theta.diminfo[0].strides));
 5627: 
+5628:                     c = math.cos(theta)
          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5628, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_cos); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5628, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5628, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_25);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_25, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_25, __pyx_t_7); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5628, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_GOTREF(__pyx_t_27);
          } else {
            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5628, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_7);
            __pyx_t_7 = 0;
            __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_4, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5628, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          }
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_263 = __pyx_PyFloat_AsFloat(__pyx_t_27); if (unlikely((__pyx_t_263 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 5628, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_v_c = __pyx_t_263;
+5629:                     s = -math.sin(theta)
          __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5629, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_sin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5629, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_25 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5629, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_7 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          if (!__pyx_t_7) {
            __pyx_t_27 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_25); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5629, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
            __Pyx_GOTREF(__pyx_t_27);
          } else {
            __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5629, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_25);
            __pyx_t_25 = 0;
            __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5629, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_27);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_4 = PyNumber_Negative(__pyx_t_27); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5629, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_263 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_263 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 5629, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_v_s = __pyx_t_263;
 5630: 
+5631:                     dr = adotVal[k] / adotValmax
          __pyx_t_264 = __pyx_v_k;
          __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_264, __pyx_pybuffernd_adotVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_adotValmax));
+5632:                     MAJ[k] = MAJ[k] + dr
          __pyx_t_265 = __pyx_v_k;
          __pyx_t_266 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_266, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_265, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + __pyx_v_dr);
+5633:                     MIN = MAJ[k] / Rval[k]
          __pyx_t_267 = __pyx_v_k;
          __pyx_t_268 = __pyx_v_k;
          __pyx_v_MIN = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_267, __pyx_pybuffernd_MAJ.diminfo[0].strides)) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_268, __pyx_pybuffernd_Rval.diminfo[0].strides)));
+5634:                     MAJceil = math.ceil(MAJ[k])
          __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5634, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_ceil); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5634, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_269 = __pyx_v_k;
          __pyx_t_27 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_269, __pyx_pybuffernd_MAJ.diminfo[0].strides))); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5634, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __pyx_t_25 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_25)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_25);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_25) {
            __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_27); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5634, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
            __Pyx_GOTREF(__pyx_t_4);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5634, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_25); __pyx_t_25 = NULL;
            __Pyx_GIVEREF(__pyx_t_27);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_27);
            __pyx_t_27 = 0;
            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5634, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_270 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_4); if (unlikely((__pyx_t_270 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5634, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_v_MAJceil = __pyx_t_270;
+5635:                     MINceil = math.ceil(MIN)
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5635, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5635, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = PyFloat_FromDouble(__pyx_v_MIN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5635, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_27 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_27)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_27);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_27) {
            __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5635, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_4);
          } else {
            __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5635, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_27); __pyx_t_27 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_25, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5635, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_270 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_4); if (unlikely((__pyx_t_270 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5635, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_v_MINceil = __pyx_t_270;
+5636:                     red = col[k, 0]
          __pyx_t_270 = __pyx_v_k;
          __pyx_t_271 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_270, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_271, __pyx_pybuffernd_col.diminfo[1].strides));
+5637:                     green = col[k, 1]
          __pyx_t_272 = __pyx_v_k;
          __pyx_t_273 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_272, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_273, __pyx_pybuffernd_col.diminfo[1].strides));
+5638:                     blue = col[k, 2]
          __pyx_t_274 = __pyx_v_k;
          __pyx_t_275 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_274, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_275, __pyx_pybuffernd_col.diminfo[1].strides));
 5639: 
+5640:                     delX = math.ceil(math.sqrt((MAJ[k] * c) ** 2 + (MIN * s) ** 2))
          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5640, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ceil); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5640, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5640, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5640, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_276 = __pyx_v_k;
          __pyx_t_6 = PyFloat_FromDouble((pow(((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_276, __pyx_pybuffernd_MAJ.diminfo[0].strides)) * __pyx_v_c), 2.0) + powf((__pyx_v_MIN * __pyx_v_s), 2.0))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5640, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_5 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_27);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_27, function);
            }
          }
          if (!__pyx_t_5) {
            __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5640, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_7);
          } else {
            __pyx_t_61 = PyTuple_New(1+1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5640, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_61);
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_5); __pyx_t_5 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_61, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_61, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5640, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          }
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_27 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
            __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_25);
            if (likely(__pyx_t_27)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
              __Pyx_INCREF(__pyx_t_27);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_25, function);
            }
          }
          if (!__pyx_t_27) {
            __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_25, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5640, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_GOTREF(__pyx_t_4);
          } else {
            __pyx_t_61 = PyTuple_New(1+1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5640, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_61);
            __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_27); __pyx_t_27 = NULL;
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_61, 0+1, __pyx_t_7);
            __pyx_t_7 = 0;
            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_61, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5640, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          }
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_277 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_4); if (unlikely((__pyx_t_277 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5640, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_v_delX = __pyx_t_277;
+5641:                     delY = math.ceil(math.sqrt((MAJ[k] * s) ** 2 + (MIN * c) ** 2))
          __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5641, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_61 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_ceil); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 5641, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5641, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 5641, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_277 = __pyx_v_k;
          __pyx_t_7 = PyFloat_FromDouble((pow(((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_277, __pyx_pybuffernd_MAJ.diminfo[0].strides)) * __pyx_v_s), 2.0) + powf((__pyx_v_MIN * __pyx_v_c), 2.0))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5641, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_27))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_27);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_27);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_27, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_25 = __Pyx_PyObject_CallOneArg(__pyx_t_27, __pyx_t_7); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5641, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_GOTREF(__pyx_t_25);
          } else {
            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5641, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_7);
            __pyx_t_7 = 0;
            __pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_5, NULL); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 5641, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          }
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_27 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_61))) {
            __pyx_t_27 = PyMethod_GET_SELF(__pyx_t_61);
            if (likely(__pyx_t_27)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_61);
              __Pyx_INCREF(__pyx_t_27);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_61, function);
            }
          }
          if (!__pyx_t_27) {
            __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_61, __pyx_t_25); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5641, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
            __Pyx_GOTREF(__pyx_t_4);
          } else {
            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5641, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_27); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_27); __pyx_t_27 = NULL;
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_25);
            __pyx_t_25 = 0;
            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5641, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          }
          __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
          __pyx_t_278 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_4); if (unlikely((__pyx_t_278 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 5641, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_v_delY = __pyx_t_278;
 5642: 
 5643: 
 5644: 
 5645:                     # OUTWARD
 5646: 
+5647:                     for deli in range(0, delX + 1):
          __pyx_t_278 = (__pyx_v_delX + 1);
          for (__pyx_t_279 = 0; __pyx_t_279 < __pyx_t_278; __pyx_t_279+=1) {
            __pyx_v_deli = __pyx_t_279;
+5648:                         for delj in range(0, delY + 1):
            __pyx_t_280 = (__pyx_v_delY + 1);
            for (__pyx_t_281 = 0; __pyx_t_281 < __pyx_t_280; __pyx_t_281+=1) {
              __pyx_v_delj = __pyx_t_281;
+5649:                             if ((deli * c - delj * s) / MAJ[k]) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_282 = __pyx_v_k;
              __pyx_t_23 = (((pow((((__pyx_t_5numpy_float64_t)((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_282, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
 5650: 
+5651:                                 i, j = xo + deli, yo + delj
                __pyx_t_283 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_284 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_283;
                __pyx_v_j = __pyx_t_284;
+5652:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_285 = (0 <= __pyx_v_i);
                if (__pyx_t_285) {
                  __pyx_t_285 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_286 = (__pyx_t_285 != 0);
                if (__pyx_t_286) {
                } else {
                  __pyx_t_23 = __pyx_t_286;
                  goto __pyx_L40_bool_binop_done;
                }
                __pyx_t_286 = (0 <= __pyx_v_j);
                if (__pyx_t_286) {
                  __pyx_t_286 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_285 = (__pyx_t_286 != 0);
                __pyx_t_23 = __pyx_t_285;
                __pyx_L40_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+5653:                                     if I[i, j] == 0:
                  __pyx_t_284 = __pyx_v_i;
                  __pyx_t_283 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_283, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5654:                                         for dum in range(1):
                    for (__pyx_t_287 = 0; __pyx_t_287 < 1; __pyx_t_287+=1) {
                      __pyx_v_dum = __pyx_t_287;
 5655: 
+5656:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5657:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_288 = (__pyx_v_i - 1);
                        __pyx_t_289 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_288, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_289, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5658:                                                     I[i, j] = Io
                          __pyx_t_290 = __pyx_v_i;
                          __pyx_t_291 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_290, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_291, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5659:                                                     Col[i, j, 2] = red
                          __pyx_t_292 = __pyx_v_i;
                          __pyx_t_293 = __pyx_v_j;
                          __pyx_t_294 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_292, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_293, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_294, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5660:                                                     Col[i, j, 1] = green
                          __pyx_t_295 = __pyx_v_i;
                          __pyx_t_296 = __pyx_v_j;
                          __pyx_t_297 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_295, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_296, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_297, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5661:                                                     Col[i, j, 0] = blue
                          __pyx_t_298 = __pyx_v_i;
                          __pyx_t_299 = __pyx_v_j;
                          __pyx_t_300 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_298, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_299, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_300, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5662:                                                     a[k] = 1
                          __pyx_t_301 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_301, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5663:                                                     break
                          goto __pyx_L44_break;
+5664:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5665:                                                 if I[i, j - 1] == Io:
                        __pyx_t_302 = __pyx_v_i;
                        __pyx_t_303 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_302, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_303, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5666:                                                     I[i, j] = Io
                          __pyx_t_304 = __pyx_v_i;
                          __pyx_t_305 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_304, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_305, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5667:                                                     Col[i, j, 2] = red
                          __pyx_t_306 = __pyx_v_i;
                          __pyx_t_307 = __pyx_v_j;
                          __pyx_t_308 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_306, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_307, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_308, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5668:                                                     Col[i, j, 1] = green
                          __pyx_t_309 = __pyx_v_i;
                          __pyx_t_310 = __pyx_v_j;
                          __pyx_t_311 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_309, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_310, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_311, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5669:                                                     Col[i, j, 0] = blue
                          __pyx_t_312 = __pyx_v_i;
                          __pyx_t_313 = __pyx_v_j;
                          __pyx_t_314 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_312, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_313, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_314, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5670:                                                     a[k] = 1
                          __pyx_t_315 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_315, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5671:                                                     break
                          goto __pyx_L44_break;
 5672: 
+5673:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5674:                                                 if I[i, j + 1] == Io:
                        __pyx_t_316 = __pyx_v_i;
                        __pyx_t_317 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_316, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_317, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5675:                                                     I[i, j] = Io
                          __pyx_t_318 = __pyx_v_i;
                          __pyx_t_319 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_318, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_319, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5676:                                                     Col[i, j, 2] = red
                          __pyx_t_320 = __pyx_v_i;
                          __pyx_t_321 = __pyx_v_j;
                          __pyx_t_322 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_320, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_321, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_322, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5677:                                                     Col[i, j, 1] = green
                          __pyx_t_323 = __pyx_v_i;
                          __pyx_t_324 = __pyx_v_j;
                          __pyx_t_325 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_323, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_324, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_325, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5678:                                                     Col[i, j, 0] = blue
                          __pyx_t_326 = __pyx_v_i;
                          __pyx_t_327 = __pyx_v_j;
                          __pyx_t_328 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_326, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_327, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_328, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5679:                                                     a[k] = 1
                          __pyx_t_329 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_329, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5680:                                                     break
                          goto __pyx_L44_break;
 5681: 
 5682: 
+5683:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L44_break:;
+5684:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_330 = (__pyx_v_i + 1);
                        __pyx_t_331 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_330, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_331, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5685:                                                     I[i, j] = Io
                          __pyx_t_332 = __pyx_v_i;
                          __pyx_t_333 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_332, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_333, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5686:                                                     Col[i, j, 2] = red
                          __pyx_t_334 = __pyx_v_i;
                          __pyx_t_335 = __pyx_v_j;
                          __pyx_t_336 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_334, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_335, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_336, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5687:                                                     Col[i, j, 1] = green
                          __pyx_t_337 = __pyx_v_i;
                          __pyx_t_338 = __pyx_v_j;
                          __pyx_t_339 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_337, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_338, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_339, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5688:                                                     Col[i, j, 0] = blue
                          __pyx_t_340 = __pyx_v_i;
                          __pyx_t_341 = __pyx_v_j;
                          __pyx_t_342 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_340, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_341, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_342, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5689:                                                     a[k] = 1
                          __pyx_t_343 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_343, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5690:                                                     break
                          goto __pyx_L44_break;
 5691: 
 5692: 
+5693:                                 i, j = xo - deli, yo - delj
                __pyx_t_287 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_344 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_287;
                __pyx_v_j = __pyx_t_344;
+5694:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_285 = (0 <= __pyx_v_i);
                if (__pyx_t_285) {
                  __pyx_t_285 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_286 = (__pyx_t_285 != 0);
                if (__pyx_t_286) {
                } else {
                  __pyx_t_23 = __pyx_t_286;
                  goto __pyx_L54_bool_binop_done;
                }
                __pyx_t_286 = (0 <= __pyx_v_j);
                if (__pyx_t_286) {
                  __pyx_t_286 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_285 = (__pyx_t_286 != 0);
                __pyx_t_23 = __pyx_t_285;
                __pyx_L54_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+5695:                                     if I[i, j] == 0:
                  __pyx_t_344 = __pyx_v_i;
                  __pyx_t_287 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_344, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_287, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5696:                                         for dum in range(1):
                    for (__pyx_t_345 = 0; __pyx_t_345 < 1; __pyx_t_345+=1) {
                      __pyx_v_dum = __pyx_t_345;
 5697: 
+5698:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5699:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_346 = (__pyx_v_i - 1);
                        __pyx_t_347 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_346, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_347, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5700:                                                     I[i, j] = Io
                          __pyx_t_348 = __pyx_v_i;
                          __pyx_t_349 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_348, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_349, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5701:                                                     Col[i, j, 2] = red
                          __pyx_t_350 = __pyx_v_i;
                          __pyx_t_351 = __pyx_v_j;
                          __pyx_t_352 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_350, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_351, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_352, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5702:                                                     Col[i, j, 1] = green
                          __pyx_t_353 = __pyx_v_i;
                          __pyx_t_354 = __pyx_v_j;
                          __pyx_t_355 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_353, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_354, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_355, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5703:                                                     Col[i, j, 0] = blue
                          __pyx_t_356 = __pyx_v_i;
                          __pyx_t_357 = __pyx_v_j;
                          __pyx_t_358 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_356, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_357, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_358, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5704:                                                     a[k] = 1
                          __pyx_t_359 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_359, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5705:                                                     break
                          goto __pyx_L58_break;
+5706:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5707:                                                 if I[i, j - 1] == Io:
                        __pyx_t_360 = __pyx_v_i;
                        __pyx_t_361 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_360, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_361, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5708:                                                     I[i, j] = Io
                          __pyx_t_362 = __pyx_v_i;
                          __pyx_t_363 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_362, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_363, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5709:                                                     Col[i, j, 2] = red
                          __pyx_t_364 = __pyx_v_i;
                          __pyx_t_365 = __pyx_v_j;
                          __pyx_t_366 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_364, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_365, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_366, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5710:                                                     Col[i, j, 1] = green
                          __pyx_t_367 = __pyx_v_i;
                          __pyx_t_368 = __pyx_v_j;
                          __pyx_t_369 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_367, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_368, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_369, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5711:                                                     Col[i, j, 0] = blue
                          __pyx_t_370 = __pyx_v_i;
                          __pyx_t_371 = __pyx_v_j;
                          __pyx_t_372 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_370, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_371, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_372, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5712:                                                     a[k] = 1
                          __pyx_t_373 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_373, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5713:                                                     break
                          goto __pyx_L58_break;
 5714: 
+5715:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5716:                                                 if I[i, j + 1] == Io:
                        __pyx_t_374 = __pyx_v_i;
                        __pyx_t_375 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_374, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_375, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5717:                                                     I[i, j] = Io
                          __pyx_t_376 = __pyx_v_i;
                          __pyx_t_377 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_376, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_377, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5718:                                                     Col[i, j, 2] = red
                          __pyx_t_378 = __pyx_v_i;
                          __pyx_t_379 = __pyx_v_j;
                          __pyx_t_380 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_378, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_379, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_380, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5719:                                                     Col[i, j, 1] = green
                          __pyx_t_381 = __pyx_v_i;
                          __pyx_t_382 = __pyx_v_j;
                          __pyx_t_383 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_381, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_382, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_383, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5720:                                                     Col[i, j, 0] = blue
                          __pyx_t_384 = __pyx_v_i;
                          __pyx_t_385 = __pyx_v_j;
                          __pyx_t_386 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_384, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_385, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_386, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5721:                                                     a[k] = 1
                          __pyx_t_387 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_387, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5722:                                                     break
                          goto __pyx_L58_break;
 5723: 
 5724: 
+5725:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L58_break:;
+5726:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_388 = (__pyx_v_i + 1);
                        __pyx_t_389 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_388, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_389, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5727:                                                     I[i, j] = Io
                          __pyx_t_390 = __pyx_v_i;
                          __pyx_t_391 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_390, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_391, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5728:                                                     Col[i, j, 2] = red
                          __pyx_t_392 = __pyx_v_i;
                          __pyx_t_393 = __pyx_v_j;
                          __pyx_t_394 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_392, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_393, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_394, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5729:                                                     Col[i, j, 1] = green
                          __pyx_t_395 = __pyx_v_i;
                          __pyx_t_396 = __pyx_v_j;
                          __pyx_t_397 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_395, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_396, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_397, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5730:                                                     Col[i, j, 0] = blue
                          __pyx_t_398 = __pyx_v_i;
                          __pyx_t_399 = __pyx_v_j;
                          __pyx_t_400 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_398, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_399, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_400, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5731:                                                     a[k] = 1
                          __pyx_t_401 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_401, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5732:                                                     break
                          goto __pyx_L58_break;
 5733: 
 5734: 
+5735:                     for deli in range(0, -delX - 1, -1):
          __pyx_t_278 = ((-__pyx_v_delX) - 1);
          for (__pyx_t_279 = 0; __pyx_t_279 > __pyx_t_278; __pyx_t_279-=1) {
            __pyx_v_deli = __pyx_t_279;
+5736:                         for delj in range(0, delY + 1):
            __pyx_t_280 = (__pyx_v_delY + 1);
            for (__pyx_t_281 = 0; __pyx_t_281 < __pyx_t_280; __pyx_t_281+=1) {
              __pyx_v_delj = __pyx_t_281;
+5737:                             if ((deli * c - delj * s) / MAJ[k]) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_345 = __pyx_v_k;
              __pyx_t_23 = (((pow((((__pyx_t_5numpy_float64_t)((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_345, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
 5738: 
+5739:                                 i, j = xo + deli, yo + delj
                __pyx_t_402 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_403 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_402;
                __pyx_v_j = __pyx_t_403;
+5740:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_285 = (0 <= __pyx_v_i);
                if (__pyx_t_285) {
                  __pyx_t_285 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_286 = (__pyx_t_285 != 0);
                if (__pyx_t_286) {
                } else {
                  __pyx_t_23 = __pyx_t_286;
                  goto __pyx_L73_bool_binop_done;
                }
                __pyx_t_286 = (0 <= __pyx_v_j);
                if (__pyx_t_286) {
                  __pyx_t_286 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_285 = (__pyx_t_286 != 0);
                __pyx_t_23 = __pyx_t_285;
                __pyx_L73_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+5741:                                     if I[i, j] == 0:
                  __pyx_t_403 = __pyx_v_i;
                  __pyx_t_402 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_403, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_402, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5742:                                         for dum in range(1):
                    for (__pyx_t_404 = 0; __pyx_t_404 < 1; __pyx_t_404+=1) {
                      __pyx_v_dum = __pyx_t_404;
 5743: 
+5744:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5745:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_405 = (__pyx_v_i - 1);
                        __pyx_t_406 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_405, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_406, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5746:                                                     I[i, j] = Io
                          __pyx_t_407 = __pyx_v_i;
                          __pyx_t_408 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_407, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_408, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5747:                                                     Col[i, j, 2] = red
                          __pyx_t_409 = __pyx_v_i;
                          __pyx_t_410 = __pyx_v_j;
                          __pyx_t_411 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_409, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_410, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_411, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5748:                                                     Col[i, j, 1] = green
                          __pyx_t_412 = __pyx_v_i;
                          __pyx_t_413 = __pyx_v_j;
                          __pyx_t_414 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_412, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_413, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_414, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5749:                                                     Col[i, j, 0] = blue
                          __pyx_t_415 = __pyx_v_i;
                          __pyx_t_416 = __pyx_v_j;
                          __pyx_t_417 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_415, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_416, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_417, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5750:                                                     a[k] = 1
                          __pyx_t_418 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_418, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5751:                                                     break
                          goto __pyx_L77_break;
+5752:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5753:                                                 if I[i, j - 1] == Io:
                        __pyx_t_419 = __pyx_v_i;
                        __pyx_t_420 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_419, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_420, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5754:                                                     I[i, j] = Io
                          __pyx_t_421 = __pyx_v_i;
                          __pyx_t_422 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_421, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_422, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5755:                                                     Col[i, j, 2] = red
                          __pyx_t_423 = __pyx_v_i;
                          __pyx_t_424 = __pyx_v_j;
                          __pyx_t_425 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_423, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_424, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_425, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5756:                                                     Col[i, j, 1] = green
                          __pyx_t_426 = __pyx_v_i;
                          __pyx_t_427 = __pyx_v_j;
                          __pyx_t_428 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_426, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_427, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_428, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5757:                                                     Col[i, j, 0] = blue
                          __pyx_t_429 = __pyx_v_i;
                          __pyx_t_430 = __pyx_v_j;
                          __pyx_t_431 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_429, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_430, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_431, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5758:                                                     a[k] = 1
                          __pyx_t_432 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_432, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5759:                                                     break
                          goto __pyx_L77_break;
 5760: 
+5761:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5762:                                                 if I[i, j + 1] == Io:
                        __pyx_t_433 = __pyx_v_i;
                        __pyx_t_434 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_433, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_434, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5763:                                                     I[i, j] = Io
                          __pyx_t_435 = __pyx_v_i;
                          __pyx_t_436 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_435, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_436, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5764:                                                     Col[i, j, 2] = red
                          __pyx_t_437 = __pyx_v_i;
                          __pyx_t_438 = __pyx_v_j;
                          __pyx_t_439 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_437, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_438, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_439, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5765:                                                     Col[i, j, 1] = green
                          __pyx_t_440 = __pyx_v_i;
                          __pyx_t_441 = __pyx_v_j;
                          __pyx_t_442 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_440, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_441, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_442, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5766:                                                     Col[i, j, 0] = blue
                          __pyx_t_443 = __pyx_v_i;
                          __pyx_t_444 = __pyx_v_j;
                          __pyx_t_445 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_443, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_444, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_445, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5767:                                                     a[k] = 1
                          __pyx_t_446 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_446, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5768:                                                     break
                          goto __pyx_L77_break;
 5769: 
 5770: 
+5771:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L77_break:;
+5772:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_447 = (__pyx_v_i + 1);
                        __pyx_t_448 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_447, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_448, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5773:                                                     I[i, j] = Io
                          __pyx_t_449 = __pyx_v_i;
                          __pyx_t_450 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_449, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_450, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5774:                                                     Col[i, j, 2] = red
                          __pyx_t_451 = __pyx_v_i;
                          __pyx_t_452 = __pyx_v_j;
                          __pyx_t_453 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_451, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_452, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_453, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5775:                                                     Col[i, j, 1] = green
                          __pyx_t_454 = __pyx_v_i;
                          __pyx_t_455 = __pyx_v_j;
                          __pyx_t_456 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_454, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_455, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_456, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5776:                                                     Col[i, j, 0] = blue
                          __pyx_t_457 = __pyx_v_i;
                          __pyx_t_458 = __pyx_v_j;
                          __pyx_t_459 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_457, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_458, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_459, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5777:                                                     a[k] = 1
                          __pyx_t_460 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_460, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5778:                                                     break
                          goto __pyx_L77_break;
 5779: 
 5780: 
+5781:                                 i, j = xo - deli, yo - delj
                __pyx_t_404 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_461 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_404;
                __pyx_v_j = __pyx_t_461;
+5782:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_285 = (0 <= __pyx_v_i);
                if (__pyx_t_285) {
                  __pyx_t_285 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_286 = (__pyx_t_285 != 0);
                if (__pyx_t_286) {
                } else {
                  __pyx_t_23 = __pyx_t_286;
                  goto __pyx_L87_bool_binop_done;
                }
                __pyx_t_286 = (0 <= __pyx_v_j);
                if (__pyx_t_286) {
                  __pyx_t_286 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_285 = (__pyx_t_286 != 0);
                __pyx_t_23 = __pyx_t_285;
                __pyx_L87_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+5783:                                     if I[i, j] == 0:
                  __pyx_t_461 = __pyx_v_i;
                  __pyx_t_404 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_461, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_404, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5784:                                         for dum in range(1):
                    for (__pyx_t_462 = 0; __pyx_t_462 < 1; __pyx_t_462+=1) {
                      __pyx_v_dum = __pyx_t_462;
 5785: 
+5786:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5787:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_463 = (__pyx_v_i - 1);
                        __pyx_t_464 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_463, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_464, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5788:                                                     I[i, j] = Io
                          __pyx_t_465 = __pyx_v_i;
                          __pyx_t_466 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_465, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_466, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5789:                                                     Col[i, j, 2] = red
                          __pyx_t_467 = __pyx_v_i;
                          __pyx_t_468 = __pyx_v_j;
                          __pyx_t_469 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_467, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_468, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_469, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5790:                                                     Col[i, j, 1] = green
                          __pyx_t_470 = __pyx_v_i;
                          __pyx_t_471 = __pyx_v_j;
                          __pyx_t_472 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_470, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_471, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_472, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5791:                                                     Col[i, j, 0] = blue
                          __pyx_t_473 = __pyx_v_i;
                          __pyx_t_474 = __pyx_v_j;
                          __pyx_t_475 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_473, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_474, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_475, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5792:                                                     a[k] = 1
                          __pyx_t_476 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_476, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5793:                                                     break
                          goto __pyx_L91_break;
+5794:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5795:                                                 if I[i, j - 1] == Io:
                        __pyx_t_477 = __pyx_v_i;
                        __pyx_t_478 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_477, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_478, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5796:                                                     I[i, j] = Io
                          __pyx_t_479 = __pyx_v_i;
                          __pyx_t_480 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_479, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_480, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5797:                                                     Col[i, j, 2] = red
                          __pyx_t_481 = __pyx_v_i;
                          __pyx_t_482 = __pyx_v_j;
                          __pyx_t_483 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_481, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_482, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_483, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5798:                                                     Col[i, j, 1] = green
                          __pyx_t_484 = __pyx_v_i;
                          __pyx_t_485 = __pyx_v_j;
                          __pyx_t_486 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_484, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_485, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_486, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5799:                                                     Col[i, j, 0] = blue
                          __pyx_t_487 = __pyx_v_i;
                          __pyx_t_488 = __pyx_v_j;
                          __pyx_t_489 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_487, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_488, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_489, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5800:                                                     a[k] = 1
                          __pyx_t_490 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_490, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5801:                                                     break
                          goto __pyx_L91_break;
 5802: 
+5803:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5804:                                                 if I[i, j + 1] == Io:
                        __pyx_t_491 = __pyx_v_i;
                        __pyx_t_492 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_491, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_492, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5805:                                                     I[i, j] = Io
                          __pyx_t_493 = __pyx_v_i;
                          __pyx_t_494 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_493, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_494, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5806:                                                     Col[i, j, 2] = red
                          __pyx_t_495 = __pyx_v_i;
                          __pyx_t_496 = __pyx_v_j;
                          __pyx_t_497 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_495, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_496, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_497, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5807:                                                     Col[i, j, 1] = green
                          __pyx_t_498 = __pyx_v_i;
                          __pyx_t_499 = __pyx_v_j;
                          __pyx_t_500 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_498, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_499, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_500, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5808:                                                     Col[i, j, 0] = blue
                          __pyx_t_501 = __pyx_v_i;
                          __pyx_t_502 = __pyx_v_j;
                          __pyx_t_503 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_501, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_502, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_503, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5809:                                                     a[k] = 1
                          __pyx_t_504 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_504, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5810:                                                     break
                          goto __pyx_L91_break;
 5811: 
 5812: 
+5813:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L91_break:;
+5814:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_505 = (__pyx_v_i + 1);
                        __pyx_t_506 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_505, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_506, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5815:                                                     I[i, j] = Io
                          __pyx_t_507 = __pyx_v_i;
                          __pyx_t_508 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_507, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_508, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5816:                                                     Col[i, j, 2] = red
                          __pyx_t_509 = __pyx_v_i;
                          __pyx_t_510 = __pyx_v_j;
                          __pyx_t_511 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_509, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_510, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_511, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5817:                                                     Col[i, j, 1] = green
                          __pyx_t_512 = __pyx_v_i;
                          __pyx_t_513 = __pyx_v_j;
                          __pyx_t_514 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_512, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_513, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_514, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5818:                                                     Col[i, j, 0] = blue
                          __pyx_t_515 = __pyx_v_i;
                          __pyx_t_516 = __pyx_v_j;
                          __pyx_t_517 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_515, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_516, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_517, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5819:                                                     a[k] = 1
                          __pyx_t_518 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_518, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5820:                                                     break
                          goto __pyx_L91_break;
 5821: 
 5822: 
 5823: 
 5824:                     # INWARD
 5825: 
+5826:                     for deli in range(delX, -1, -1):
          for (__pyx_t_278 = __pyx_v_delX; __pyx_t_278 > -1L; __pyx_t_278-=1) {
            __pyx_v_deli = __pyx_t_278;
+5827:                         for delj in range(0, delY + 1):
            __pyx_t_279 = (__pyx_v_delY + 1);
            for (__pyx_t_280 = 0; __pyx_t_280 < __pyx_t_279; __pyx_t_280+=1) {
              __pyx_v_delj = __pyx_t_280;
+5828:                             if ((deli * c - delj * s) / MAJ[k]) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_281 = __pyx_v_k;
              __pyx_t_23 = (((pow((((__pyx_t_5numpy_float64_t)((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_281, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
 5829: 
+5830:                                 i, j = xo + deli, yo + delj
                __pyx_t_462 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_519 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_462;
                __pyx_v_j = __pyx_t_519;
+5831:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_285 = (0 <= __pyx_v_i);
                if (__pyx_t_285) {
                  __pyx_t_285 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_286 = (__pyx_t_285 != 0);
                if (__pyx_t_286) {
                } else {
                  __pyx_t_23 = __pyx_t_286;
                  goto __pyx_L106_bool_binop_done;
                }
                __pyx_t_286 = (0 <= __pyx_v_j);
                if (__pyx_t_286) {
                  __pyx_t_286 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_285 = (__pyx_t_286 != 0);
                __pyx_t_23 = __pyx_t_285;
                __pyx_L106_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+5832:                                     if I[i, j] == 0:
                  __pyx_t_519 = __pyx_v_i;
                  __pyx_t_462 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_519, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_462, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5833:                                         for dum in range(1):
                    for (__pyx_t_520 = 0; __pyx_t_520 < 1; __pyx_t_520+=1) {
                      __pyx_v_dum = __pyx_t_520;
 5834: 
+5835:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5836:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_521 = (__pyx_v_i - 1);
                        __pyx_t_522 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_521, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_522, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5837:                                                     I[i, j] = Io
                          __pyx_t_523 = __pyx_v_i;
                          __pyx_t_524 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_523, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_524, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5838:                                                     Col[i, j, 2] = red
                          __pyx_t_525 = __pyx_v_i;
                          __pyx_t_526 = __pyx_v_j;
                          __pyx_t_527 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_525, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_526, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_527, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5839:                                                     Col[i, j, 1] = green
                          __pyx_t_528 = __pyx_v_i;
                          __pyx_t_529 = __pyx_v_j;
                          __pyx_t_530 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_528, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_529, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_530, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5840:                                                     Col[i, j, 0] = blue
                          __pyx_t_531 = __pyx_v_i;
                          __pyx_t_532 = __pyx_v_j;
                          __pyx_t_533 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_531, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_532, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_533, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5841:                                                     a[k] = 1
                          __pyx_t_534 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_534, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5842:                                                     break
                          goto __pyx_L110_break;
+5843:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5844:                                                 if I[i, j - 1] == Io:
                        __pyx_t_535 = __pyx_v_i;
                        __pyx_t_536 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_535, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_536, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5845:                                                     I[i, j] = Io
                          __pyx_t_537 = __pyx_v_i;
                          __pyx_t_538 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_537, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_538, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5846:                                                     Col[i, j, 2] = red
                          __pyx_t_539 = __pyx_v_i;
                          __pyx_t_540 = __pyx_v_j;
                          __pyx_t_541 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_539, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_540, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_541, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5847:                                                     Col[i, j, 1] = green
                          __pyx_t_542 = __pyx_v_i;
                          __pyx_t_543 = __pyx_v_j;
                          __pyx_t_544 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_542, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_543, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_544, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5848:                                                     Col[i, j, 0] = blue
                          __pyx_t_545 = __pyx_v_i;
                          __pyx_t_546 = __pyx_v_j;
                          __pyx_t_547 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_545, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_546, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_547, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5849:                                                     a[k] = 1
                          __pyx_t_548 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_548, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5850:                                                     break
                          goto __pyx_L110_break;
 5851: 
+5852:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5853:                                                 if I[i, j + 1] == Io:
                        __pyx_t_549 = __pyx_v_i;
                        __pyx_t_550 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_549, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_550, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5854:                                                     I[i, j] = Io
                          __pyx_t_551 = __pyx_v_i;
                          __pyx_t_552 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_551, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_552, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5855:                                                     Col[i, j, 2] = red
                          __pyx_t_553 = __pyx_v_i;
                          __pyx_t_554 = __pyx_v_j;
                          __pyx_t_555 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_553, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_554, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_555, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5856:                                                     Col[i, j, 1] = green
                          __pyx_t_556 = __pyx_v_i;
                          __pyx_t_557 = __pyx_v_j;
                          __pyx_t_558 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_556, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_557, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_558, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5857:                                                     Col[i, j, 0] = blue
                          __pyx_t_559 = __pyx_v_i;
                          __pyx_t_560 = __pyx_v_j;
                          __pyx_t_561 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_559, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_560, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_561, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5858:                                                     a[k] = 1
                          __pyx_t_562 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_562, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5859:                                                     break
                          goto __pyx_L110_break;
 5860: 
 5861: 
+5862:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L110_break:;
+5863:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_563 = (__pyx_v_i + 1);
                        __pyx_t_564 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_563, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_564, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5864:                                                     I[i, j] = Io
                          __pyx_t_565 = __pyx_v_i;
                          __pyx_t_566 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_565, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_566, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5865:                                                     Col[i, j, 2] = red
                          __pyx_t_567 = __pyx_v_i;
                          __pyx_t_568 = __pyx_v_j;
                          __pyx_t_569 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_567, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_568, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_569, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5866:                                                     Col[i, j, 1] = green
                          __pyx_t_570 = __pyx_v_i;
                          __pyx_t_571 = __pyx_v_j;
                          __pyx_t_572 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_570, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_571, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_572, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5867:                                                     Col[i, j, 0] = blue
                          __pyx_t_573 = __pyx_v_i;
                          __pyx_t_574 = __pyx_v_j;
                          __pyx_t_575 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_573, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_574, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_575, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5868:                                                     a[k] = 1
                          __pyx_t_576 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_576, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5869:                                                     break
                          goto __pyx_L110_break;
 5870: 
 5871: 
+5872:                                 i, j = xo - deli, yo - delj
                __pyx_t_520 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_577 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_520;
                __pyx_v_j = __pyx_t_577;
+5873:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_285 = (0 <= __pyx_v_i);
                if (__pyx_t_285) {
                  __pyx_t_285 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_286 = (__pyx_t_285 != 0);
                if (__pyx_t_286) {
                } else {
                  __pyx_t_23 = __pyx_t_286;
                  goto __pyx_L120_bool_binop_done;
                }
                __pyx_t_286 = (0 <= __pyx_v_j);
                if (__pyx_t_286) {
                  __pyx_t_286 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_285 = (__pyx_t_286 != 0);
                __pyx_t_23 = __pyx_t_285;
                __pyx_L120_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+5874:                                     if I[i, j] == 0:
                  __pyx_t_577 = __pyx_v_i;
                  __pyx_t_520 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_577, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_520, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5875:                                         for dum in range(1):
                    for (__pyx_t_578 = 0; __pyx_t_578 < 1; __pyx_t_578+=1) {
                      __pyx_v_dum = __pyx_t_578;
 5876: 
+5877:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5878:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_579 = (__pyx_v_i - 1);
                        __pyx_t_580 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_579, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_580, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5879:                                                     I[i, j] = Io
                          __pyx_t_581 = __pyx_v_i;
                          __pyx_t_582 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_581, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_582, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5880:                                                     Col[i, j, 2] = red
                          __pyx_t_583 = __pyx_v_i;
                          __pyx_t_584 = __pyx_v_j;
                          __pyx_t_585 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_583, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_584, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_585, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5881:                                                     Col[i, j, 1] = green
                          __pyx_t_586 = __pyx_v_i;
                          __pyx_t_587 = __pyx_v_j;
                          __pyx_t_588 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_586, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_587, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_588, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5882:                                                     Col[i, j, 0] = blue
                          __pyx_t_589 = __pyx_v_i;
                          __pyx_t_590 = __pyx_v_j;
                          __pyx_t_591 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_589, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_590, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_591, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5883:                                                     a[k] = 1
                          __pyx_t_592 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_592, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5884:                                                     break
                          goto __pyx_L124_break;
+5885:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5886:                                                 if I[i, j - 1] == Io:
                        __pyx_t_593 = __pyx_v_i;
                        __pyx_t_594 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_593, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_594, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5887:                                                     I[i, j] = Io
                          __pyx_t_595 = __pyx_v_i;
                          __pyx_t_596 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_595, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_596, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5888:                                                     Col[i, j, 2] = red
                          __pyx_t_597 = __pyx_v_i;
                          __pyx_t_598 = __pyx_v_j;
                          __pyx_t_599 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_597, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_598, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_599, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5889:                                                     Col[i, j, 1] = green
                          __pyx_t_600 = __pyx_v_i;
                          __pyx_t_601 = __pyx_v_j;
                          __pyx_t_602 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_600, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_601, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_602, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5890:                                                     Col[i, j, 0] = blue
                          __pyx_t_603 = __pyx_v_i;
                          __pyx_t_604 = __pyx_v_j;
                          __pyx_t_605 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_603, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_604, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_605, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5891:                                                     a[k] = 1
                          __pyx_t_606 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_606, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5892:                                                     break
                          goto __pyx_L124_break;
 5893: 
+5894:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5895:                                                 if I[i, j + 1] == Io:
                        __pyx_t_607 = __pyx_v_i;
                        __pyx_t_608 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_607, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_608, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5896:                                                     I[i, j] = Io
                          __pyx_t_609 = __pyx_v_i;
                          __pyx_t_610 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_609, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_610, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5897:                                                     Col[i, j, 2] = red
                          __pyx_t_611 = __pyx_v_i;
                          __pyx_t_612 = __pyx_v_j;
                          __pyx_t_613 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_611, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_612, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_613, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5898:                                                     Col[i, j, 1] = green
                          __pyx_t_614 = __pyx_v_i;
                          __pyx_t_615 = __pyx_v_j;
                          __pyx_t_616 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_614, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_615, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_616, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5899:                                                     Col[i, j, 0] = blue
                          __pyx_t_617 = __pyx_v_i;
                          __pyx_t_618 = __pyx_v_j;
                          __pyx_t_619 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_617, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_618, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_619, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5900:                                                     a[k] = 1
                          __pyx_t_620 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_620, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5901:                                                     break
                          goto __pyx_L124_break;
 5902: 
 5903: 
+5904:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L124_break:;
+5905:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_621 = (__pyx_v_i + 1);
                        __pyx_t_622 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_621, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_622, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5906:                                                     I[i, j] = Io
                          __pyx_t_623 = __pyx_v_i;
                          __pyx_t_624 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_623, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_624, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5907:                                                     Col[i, j, 2] = red
                          __pyx_t_625 = __pyx_v_i;
                          __pyx_t_626 = __pyx_v_j;
                          __pyx_t_627 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_625, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_626, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_627, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5908:                                                     Col[i, j, 1] = green
                          __pyx_t_628 = __pyx_v_i;
                          __pyx_t_629 = __pyx_v_j;
                          __pyx_t_630 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_628, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_629, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_630, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5909:                                                     Col[i, j, 0] = blue
                          __pyx_t_631 = __pyx_v_i;
                          __pyx_t_632 = __pyx_v_j;
                          __pyx_t_633 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_631, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_632, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_633, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5910:                                                     a[k] = 1
                          __pyx_t_634 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_634, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5911:                                                     break
                          goto __pyx_L124_break;
 5912: 
 5913: 
+5914:                     for deli in range(-delX , 0):
          for (__pyx_t_278 = (-__pyx_v_delX); __pyx_t_278 < 0; __pyx_t_278+=1) {
            __pyx_v_deli = __pyx_t_278;
+5915:                         for delj in range(0, delY + 1):
            __pyx_t_279 = (__pyx_v_delY + 1);
            for (__pyx_t_280 = 0; __pyx_t_280 < __pyx_t_279; __pyx_t_280+=1) {
              __pyx_v_delj = __pyx_t_280;
+5916:                             if ((deli * c - delj * s) / MAJ[k]) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_578 = __pyx_v_k;
              __pyx_t_23 = (((pow((((__pyx_t_5numpy_float64_t)((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s))) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_578, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
 5917: 
+5918:                                 i, j = xo + deli, yo + delj
                __pyx_t_635 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_636 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_635;
                __pyx_v_j = __pyx_t_636;
+5919:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_285 = (0 <= __pyx_v_i);
                if (__pyx_t_285) {
                  __pyx_t_285 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_286 = (__pyx_t_285 != 0);
                if (__pyx_t_286) {
                } else {
                  __pyx_t_23 = __pyx_t_286;
                  goto __pyx_L139_bool_binop_done;
                }
                __pyx_t_286 = (0 <= __pyx_v_j);
                if (__pyx_t_286) {
                  __pyx_t_286 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_285 = (__pyx_t_286 != 0);
                __pyx_t_23 = __pyx_t_285;
                __pyx_L139_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+5920:                                     if I[i, j] == 0:
                  __pyx_t_636 = __pyx_v_i;
                  __pyx_t_635 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_636, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_635, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5921:                                         for dum in range(1):
                    for (__pyx_t_637 = 0; __pyx_t_637 < 1; __pyx_t_637+=1) {
                      __pyx_v_dum = __pyx_t_637;
 5922: 
+5923:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5924:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_638 = (__pyx_v_i - 1);
                        __pyx_t_639 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_638, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_639, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5925:                                                     I[i, j] = Io
                          __pyx_t_640 = __pyx_v_i;
                          __pyx_t_641 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_640, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_641, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5926:                                                     Col[i, j, 2] = red
                          __pyx_t_642 = __pyx_v_i;
                          __pyx_t_643 = __pyx_v_j;
                          __pyx_t_644 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_642, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_643, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_644, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5927:                                                     Col[i, j, 1] = green
                          __pyx_t_645 = __pyx_v_i;
                          __pyx_t_646 = __pyx_v_j;
                          __pyx_t_647 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_645, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_646, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_647, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5928:                                                     Col[i, j, 0] = blue
                          __pyx_t_648 = __pyx_v_i;
                          __pyx_t_649 = __pyx_v_j;
                          __pyx_t_650 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_648, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_649, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_650, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5929:                                                     a[k] = 1
                          __pyx_t_651 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_651, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5930:                                                     break
                          goto __pyx_L143_break;
+5931:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5932:                                                 if I[i, j - 1] == Io:
                        __pyx_t_652 = __pyx_v_i;
                        __pyx_t_653 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_652, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_653, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5933:                                                     I[i, j] = Io
                          __pyx_t_654 = __pyx_v_i;
                          __pyx_t_655 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_654, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_655, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5934:                                                     Col[i, j, 2] = red
                          __pyx_t_656 = __pyx_v_i;
                          __pyx_t_657 = __pyx_v_j;
                          __pyx_t_658 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_656, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_657, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_658, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5935:                                                     Col[i, j, 1] = green
                          __pyx_t_659 = __pyx_v_i;
                          __pyx_t_660 = __pyx_v_j;
                          __pyx_t_661 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_659, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_660, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_661, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5936:                                                     Col[i, j, 0] = blue
                          __pyx_t_662 = __pyx_v_i;
                          __pyx_t_663 = __pyx_v_j;
                          __pyx_t_664 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_662, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_663, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_664, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5937:                                                     a[k] = 1
                          __pyx_t_665 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_665, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5938:                                                     break
                          goto __pyx_L143_break;
 5939: 
+5940:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5941:                                                 if I[i, j + 1] == Io:
                        __pyx_t_666 = __pyx_v_i;
                        __pyx_t_667 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_666, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_667, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5942:                                                     I[i, j] = Io
                          __pyx_t_668 = __pyx_v_i;
                          __pyx_t_669 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_668, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_669, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5943:                                                     Col[i, j, 2] = red
                          __pyx_t_670 = __pyx_v_i;
                          __pyx_t_671 = __pyx_v_j;
                          __pyx_t_672 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_670, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_671, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_672, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5944:                                                     Col[i, j, 1] = green
                          __pyx_t_673 = __pyx_v_i;
                          __pyx_t_674 = __pyx_v_j;
                          __pyx_t_675 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_673, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_674, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_675, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5945:                                                     Col[i, j, 0] = blue
                          __pyx_t_676 = __pyx_v_i;
                          __pyx_t_677 = __pyx_v_j;
                          __pyx_t_678 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_676, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_677, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_678, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5946:                                                     a[k] = 1
                          __pyx_t_679 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_679, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5947:                                                     break
                          goto __pyx_L143_break;
 5948: 
 5949: 
+5950:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L143_break:;
+5951:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_680 = (__pyx_v_i + 1);
                        __pyx_t_681 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_680, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_681, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5952:                                                     I[i, j] = Io
                          __pyx_t_682 = __pyx_v_i;
                          __pyx_t_683 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_682, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_683, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5953:                                                     Col[i, j, 2] = red
                          __pyx_t_684 = __pyx_v_i;
                          __pyx_t_685 = __pyx_v_j;
                          __pyx_t_686 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_684, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_685, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_686, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5954:                                                     Col[i, j, 1] = green
                          __pyx_t_687 = __pyx_v_i;
                          __pyx_t_688 = __pyx_v_j;
                          __pyx_t_689 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_687, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_688, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_689, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5955:                                                     Col[i, j, 0] = blue
                          __pyx_t_690 = __pyx_v_i;
                          __pyx_t_691 = __pyx_v_j;
                          __pyx_t_692 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_690, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_691, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_692, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5956:                                                     a[k] = 1
                          __pyx_t_693 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_693, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5957:                                                     break
                          goto __pyx_L143_break;
 5958: 
 5959: 
+5960:                                 i, j = xo - deli, yo - delj
                __pyx_t_637 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_694 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_637;
                __pyx_v_j = __pyx_t_694;
+5961:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_285 = (0 <= __pyx_v_i);
                if (__pyx_t_285) {
                  __pyx_t_285 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_286 = (__pyx_t_285 != 0);
                if (__pyx_t_286) {
                } else {
                  __pyx_t_23 = __pyx_t_286;
                  goto __pyx_L153_bool_binop_done;
                }
                __pyx_t_286 = (0 <= __pyx_v_j);
                if (__pyx_t_286) {
                  __pyx_t_286 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_285 = (__pyx_t_286 != 0);
                __pyx_t_23 = __pyx_t_285;
                __pyx_L153_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+5962:                                     if I[i, j] == 0:
                  __pyx_t_694 = __pyx_v_i;
                  __pyx_t_637 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_694, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_637, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+5963:                                         for dum in range(1):
                    for (__pyx_t_695 = 0; __pyx_t_695 < 1; __pyx_t_695+=1) {
                      __pyx_v_dum = __pyx_t_695;
 5964: 
+5965:                                             if i > 0:
                      __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5966:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_696 = (__pyx_v_i - 1);
                        __pyx_t_697 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_696, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_697, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5967:                                                     I[i, j] = Io
                          __pyx_t_698 = __pyx_v_i;
                          __pyx_t_699 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_698, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_699, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5968:                                                     Col[i, j, 2] = red
                          __pyx_t_700 = __pyx_v_i;
                          __pyx_t_701 = __pyx_v_j;
                          __pyx_t_702 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_700, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_701, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_702, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5969:                                                     Col[i, j, 1] = green
                          __pyx_t_703 = __pyx_v_i;
                          __pyx_t_704 = __pyx_v_j;
                          __pyx_t_705 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_703, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_704, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_705, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5970:                                                     Col[i, j, 0] = blue
                          __pyx_t_706 = __pyx_v_i;
                          __pyx_t_707 = __pyx_v_j;
                          __pyx_t_708 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_706, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_707, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_708, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5971:                                                     a[k] = 1
                          __pyx_t_709 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_709, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5972:                                                     break
                          goto __pyx_L157_break;
+5973:                                             if j > 0:
                      __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5974:                                                 if I[i, j - 1] == Io:
                        __pyx_t_710 = __pyx_v_i;
                        __pyx_t_711 = (__pyx_v_j - 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_710, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_711, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5975:                                                     I[i, j] = Io
                          __pyx_t_712 = __pyx_v_i;
                          __pyx_t_713 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_712, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_713, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5976:                                                     Col[i, j, 2] = red
                          __pyx_t_714 = __pyx_v_i;
                          __pyx_t_715 = __pyx_v_j;
                          __pyx_t_716 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_714, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_715, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_716, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5977:                                                     Col[i, j, 1] = green
                          __pyx_t_717 = __pyx_v_i;
                          __pyx_t_718 = __pyx_v_j;
                          __pyx_t_719 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_717, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_718, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_719, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5978:                                                     Col[i, j, 0] = blue
                          __pyx_t_720 = __pyx_v_i;
                          __pyx_t_721 = __pyx_v_j;
                          __pyx_t_722 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_720, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_721, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_722, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5979:                                                     a[k] = 1
                          __pyx_t_723 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_723, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5980:                                                     break
                          goto __pyx_L157_break;
 5981: 
+5982:                                             if j < n - 1:
                      __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+5983:                                                 if I[i, j + 1] == Io:
                        __pyx_t_724 = __pyx_v_i;
                        __pyx_t_725 = (__pyx_v_j + 1);
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_724, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_725, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5984:                                                     I[i, j] = Io
                          __pyx_t_726 = __pyx_v_i;
                          __pyx_t_727 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_726, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_727, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5985:                                                     Col[i, j, 2] = red
                          __pyx_t_728 = __pyx_v_i;
                          __pyx_t_729 = __pyx_v_j;
                          __pyx_t_730 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_728, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_729, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_730, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5986:                                                     Col[i, j, 1] = green
                          __pyx_t_731 = __pyx_v_i;
                          __pyx_t_732 = __pyx_v_j;
                          __pyx_t_733 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_731, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_732, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_733, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5987:                                                     Col[i, j, 0] = blue
                          __pyx_t_734 = __pyx_v_i;
                          __pyx_t_735 = __pyx_v_j;
                          __pyx_t_736 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_734, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_735, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_736, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5988:                                                     a[k] = 1
                          __pyx_t_737 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_737, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5989:                                                     break
                          goto __pyx_L157_break;
 5990: 
 5991: 
+5992:                                             if i < m - 1:
                      __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
                    }
                    __pyx_L157_break:;
+5993:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_738 = (__pyx_v_i + 1);
                        __pyx_t_739 = __pyx_v_j;
                        __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_738, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_739, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_23) {
/* … */
                        }
+5994:                                                     I[i, j] = Io
                          __pyx_t_740 = __pyx_v_i;
                          __pyx_t_741 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_740, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_741, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+5995:                                                     Col[i, j, 2] = red
                          __pyx_t_742 = __pyx_v_i;
                          __pyx_t_743 = __pyx_v_j;
                          __pyx_t_744 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_742, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_743, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_744, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+5996:                                                     Col[i, j, 1] = green
                          __pyx_t_745 = __pyx_v_i;
                          __pyx_t_746 = __pyx_v_j;
                          __pyx_t_747 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_745, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_746, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_747, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+5997:                                                     Col[i, j, 0] = blue
                          __pyx_t_748 = __pyx_v_i;
                          __pyx_t_749 = __pyx_v_j;
                          __pyx_t_750 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_748, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_749, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_750, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+5998:                                                     a[k] = 1
                          __pyx_t_751 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_751, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+5999:                                                     break
                          goto __pyx_L157_break;
 6000: 
 6001: 
 6002: 
 6003: 
+6004:                     if a[k] == 0:
          __pyx_t_278 = __pyx_v_k;
          __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_278, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_23) {
/* … */
          }
+6005:                         xmin = max(0, xo - delX)
            __pyx_t_279 = (__pyx_v_xo - __pyx_v_delX);
            __pyx_t_752 = 0;
            if (((__pyx_t_279 > __pyx_t_752) != 0)) {
              __pyx_t_280 = __pyx_t_279;
            } else {
              __pyx_t_280 = __pyx_t_752;
            }
            __pyx_v_xmin = __pyx_t_280;
+6006:                         xmax = min(m - 1, xo + delX)
            __pyx_t_280 = (__pyx_v_xo + __pyx_v_delX);
            __pyx_t_279 = (__pyx_v_m - 1);
            if (((__pyx_t_280 < __pyx_t_279) != 0)) {
              __pyx_t_695 = __pyx_t_280;
            } else {
              __pyx_t_695 = __pyx_t_279;
            }
            __pyx_v_xmax = __pyx_t_695;
+6007:                         ymin = max(0, yo - delY)
            __pyx_t_695 = (__pyx_v_yo - __pyx_v_delY);
            __pyx_t_752 = 0;
            if (((__pyx_t_695 > __pyx_t_752) != 0)) {
              __pyx_t_280 = __pyx_t_695;
            } else {
              __pyx_t_280 = __pyx_t_752;
            }
            __pyx_v_ymin = __pyx_t_280;
+6008:                         ymax = min(n - 1, yo + delY)
            __pyx_t_280 = (__pyx_v_yo + __pyx_v_delY);
            __pyx_t_695 = (__pyx_v_n - 1);
            if (((__pyx_t_280 < __pyx_t_695) != 0)) {
              __pyx_t_279 = __pyx_t_280;
            } else {
              __pyx_t_279 = __pyx_t_695;
            }
            __pyx_v_ymax = __pyx_t_279;
+6009:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_279 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_279, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 6010: 
+6011:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
    }
+6012:         if asy == 0:
    __pyx_t_23 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_23) {
/* … */
    }
+6013:             break
      goto __pyx_L12_break;
 6014:         else:
+6015:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_61 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_61); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 6015, __pyx_L1_error)
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_61, __pyx_n_s_all); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6015, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
      __pyx_t_61 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_61 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_61)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_61);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (__pyx_t_61) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_61); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6015, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
      } else {
        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6015, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyInt_EqObjC(__pyx_t_4, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6015, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 6015, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_23) {
/* … */
      }
+6016:                 break
        goto __pyx_L12_break;
 6017:             else:
+6018:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 6018, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+6019:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_61 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __pyx_t_25 = PyTuple_New(2); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_61);
        PyTuple_SET_ITEM(__pyx_t_25, 1, __pyx_t_61);
        __pyx_t_5 = 0;
        __pyx_t_61 = 0;
        __pyx_t_61 = PyTuple_New(1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_25);
        __pyx_t_25 = 0;
        __pyx_t_25 = PyDict_New(); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (PyDict_SetItem(__pyx_t_25, __pyx_n_s_dtype, __pyx_t_27) < 0) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_61, __pyx_t_25); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 6019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if (!(likely(((__pyx_t_27) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_27, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6019, __pyx_L1_error)
        __pyx_t_8 = ((PyArrayObject *)__pyx_t_27);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 6019, __pyx_L1_error)
        }
        __pyx_t_8 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_27));
        __pyx_t_27 = 0;
+6020:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_27 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 6020, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_n_s_ones); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6020, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 6020, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_61 = PyTuple_New(1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 6020, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_27);
        __pyx_t_27 = 0;
        __pyx_t_27 = PyDict_New(); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 6020, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6020, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6020, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PyDict_SetItem(__pyx_t_27, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6020, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_61, __pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6020, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6020, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 6020, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+6021:                 MAJ = np.zeros(p, dtype=np.float64)
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6021, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 6021, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6021, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_61 = PyTuple_New(1); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 6021, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_61, 0, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6021, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6021, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6021, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 6021, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_27, __pyx_t_61, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6021, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6021, __pyx_L1_error)
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_v_MAJ, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 6021, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_MAJ, ((PyArrayObject *)__pyx_t_4));
        __pyx_t_4 = 0;
+6022:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6022, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_61 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_centroids); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 6022, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_61);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6022, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_27 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 6022, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_27);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6022, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_7 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_61))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_61);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_61);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_61, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_6 = PyTuple_New(4+__pyx_t_26); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6022, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_26, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_26, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_27);
        PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_26, __pyx_t_27);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_26, __pyx_t_25);
        __pyx_t_5 = 0;
        __pyx_t_27 = 0;
        __pyx_t_25 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_61, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6022, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
          PyObject* sequence = __pyx_t_4;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 6022, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_61 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_61 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_61);
          __Pyx_INCREF(__pyx_t_6);
          #else
          __pyx_t_61 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 6022, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_61);
          __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6022, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_25 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6022, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_24 = Py_TYPE(__pyx_t_25)->tp_iternext;
          index = 0; __pyx_t_61 = __pyx_t_24(__pyx_t_25); if (unlikely(!__pyx_t_61)) goto __pyx_L169_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_61);
          index = 1; __pyx_t_6 = __pyx_t_24(__pyx_t_25); if (unlikely(!__pyx_t_6)) goto __pyx_L169_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_6);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_24(__pyx_t_25), 2) < 0) __PYX_ERR(0, 6022, __pyx_L1_error)
          __pyx_t_24 = NULL;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          goto __pyx_L170_unpacking_done;
          __pyx_L169_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_24 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 6022, __pyx_L1_error)
          __pyx_L170_unpacking_done:;
        }
        if (!(likely(((__pyx_t_61) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_61, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6022, __pyx_L1_error)
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6022, __pyx_L1_error)
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_61);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 6022, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_61));
        __pyx_t_61 = 0;
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_6);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_3 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 6022, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;
+6023:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 6024: 
+6025:     toc = time.time()
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_61 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 6025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_61);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_61))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_61);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_61);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_61, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_61, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6025, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_61); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6025, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_61); __pyx_t_61 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 6025, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_toc = __pyx_t_22;
+6026:     obj.exetime = toc - tic
  __pyx_t_4 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_4) < 0) __PYX_ERR(0, 6026, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+6027:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 6027, __pyx_L1_error)
+6028:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 6028, __pyx_L1_error)
+6029:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 6029, __pyx_L1_error)
+6030:     obj.RVal = Rval
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_RVal, ((PyObject *)__pyx_v_Rval)) < 0) __PYX_ERR(0, 6030, __pyx_L1_error)
+6031:     obj.adotValues = adotVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_adotValues, ((PyObject *)__pyx_v_adotVal)) < 0) __PYX_ERR(0, 6031, __pyx_L1_error)
+6032:     obj.ThetaValues = Theta
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_ThetaValues, ((PyObject *)__pyx_v_Theta)) < 0) __PYX_ERR(0, 6032, __pyx_L1_error)
+6033:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 6033, __pyx_L1_error)
+6034:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 6035: 
 6036: 
+6037: def Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_45Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_45Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot = {"Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot", (PyCFunction)__pyx_pw_9libEVOLVE_45Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_45Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_44Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_44Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  float __pyx_v_R;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_MAJceil;
  PY_LONG_LONG __pyx_v_MINceil;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_Min;
  float __pyx_v_Maj;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot", 0);
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_48);
  __Pyx_XDECREF(__pyx_t_168);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__55 = PyTuple_Pack(62, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_R, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_rad, __pyx_n_s_countim, __pyx_n_s_w, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_MAJceil, __pyx_n_s_MINceil, __pyx_n_s_Iter, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_tmp, __pyx_n_s_Min, __pyx_n_s_Maj, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_MAJ, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Col, __pyx_n_s_col, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 6037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__55);
  __Pyx_GIVEREF(__pyx_tuple__55);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_45Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_without_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_5, __pyx_t_2) < 0) __PYX_ERR(0, 6037, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 0, 62, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_5, 6037, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 6037, __pyx_L1_error)
 6038:     # Grabbing data from the input object
+6039:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6039, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+6040:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6040, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+6041:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6041, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+6042:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6042, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+6043:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6043, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+6044:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+6045:     cdef float R = obj.R
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_R); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6045, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_R = __pyx_t_3;
+6046:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6046, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+6047:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6047, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+6048:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+6049:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+6050:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6050, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+6051:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+6052:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
 6053: 
 6054:     # Declaring other variables
 6055:     cdef double tic, toc
 6056:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, dp, nnz, rad, countim, w, xt, yt, i, j, k, xo, yo, MAJceil, MINceil, Iter
 6057:     cdef float dt, f, t, tmp, Min, Maj, red, green, blue
+6058:     cdef np.ndarray[np.int64_t, ndim = 1] MAJ = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 6058, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6058, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6058, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+6059:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 6059, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6059, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6059, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+6060:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6060, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6060, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6060, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6061:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6061, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6061, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6062:     cdef np.ndarray[np.int_t, ndim = 1] a = np.ones(MN, dtype=np.int)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6062, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6062, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6062, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6063:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 6063, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6063, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6063, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+6064:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 6064, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6064, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6064, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+6065:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6065, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6065, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6066:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 6066, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6066, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6066, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+6067:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6067, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6067, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6067, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+6068:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6068, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6068, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6068, __pyx_L1_error)
  }
  __pyx_t_17 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_8));
  __pyx_t_8 = 0;
+6069:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6069, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6069, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 6069, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_tic = __pyx_t_21;
 6070: 
+6071:     t = 0
  __pyx_v_t = 0.0;
+6072:     p = 0
  __pyx_v_p = 0;
+6073:     dp = 0
  __pyx_v_dp = 0;
+6074:     countim = 0
  __pyx_v_countim = 0;
+6075:     nnz = 0
  __pyx_v_nnz = 0;
+6076:     Iter = 1
  __pyx_v_Iter = 1;
+6077:     while nnz < MN:
  while (1) {
    __pyx_t_22 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_22) break;
+6078:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+6079:         dt = 1.0 / Gt(t)
    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_6 = __pyx_v_Gt; __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6079, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6079, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6079, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_8, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6079, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_dt = __pyx_t_3;
+6080:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_6 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_5 = __pyx_v_Ndot; __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6080, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_8);
    } else {
      __pyx_t_23 = PyTuple_New(1+1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6080, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_23, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_23, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6080, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyNumber_Multiply(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_8); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6080, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_v_dp = __pyx_t_2;
+6081:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+6082:         if pdelNxy == []:
    __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6082, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6082, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_22 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_22 < 0)) __PYX_ERR(0, 6082, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_22) {
/* … */
      goto __pyx_L5;
    }
+6083:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
      __pyx_t_24 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_22 = __pyx_t_24;
      __pyx_L7_bool_binop_done:;
      if (__pyx_t_22) {
/* … */
      }
+6084:                 count = 0
        __pyx_v_count = 0;
+6085:                 while count < dp:
        while (1) {
          __pyx_t_22 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_22) break;
+6086:                     xt = np.random.randint(0, m - 1)
          __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6086, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6086, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_randint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6086, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6086, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_23 = NULL;
          __pyx_t_25 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_23)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_23);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_25 = 1;
            }
          }
          __pyx_t_7 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6086, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (__pyx_t_23) {
            __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_23); __pyx_t_23 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_25, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_25, __pyx_t_5);
          __pyx_t_5 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6086, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6086, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_xt = __pyx_t_2;
+6087:                     yt = np.random.randint(0, n - 1)
          __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6087, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6087, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_randint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6087, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6087, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_5 = NULL;
          __pyx_t_25 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_25 = 1;
            }
          }
          __pyx_t_23 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6087, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          if (__pyx_t_5) {
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_5); __pyx_t_5 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_25, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_25, __pyx_t_7);
          __pyx_t_7 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_23, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6087, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6087, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_yt = __pyx_t_2;
+6088:                     if I[xt, yt] == 0:
          __pyx_t_2 = __pyx_v_xt;
          __pyx_t_26 = __pyx_v_yt;
          __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_26, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_22) {
/* … */
          }
        }
+6089:                         I[xt, yt] = p + count + 1
            __pyx_t_27 = __pyx_v_xt;
            __pyx_t_28 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_27, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+6090:                         X[p + count] = xt
            __pyx_t_29 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+6091:                         Y[p + count] = yt
            __pyx_t_30 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+6092:                         a[p + count] = 1
            __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6093:                         MAJ[p + count] = 1
            __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1;
+6094:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_34 = 0;
            __pyx_t_35 = __pyx_v_xt;
            __pyx_t_36 = __pyx_v_yt;
            __pyx_t_37 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_36, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_37, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_34, __pyx_pybuffernd_col.diminfo[1].strides));
+6095:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_38 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_39 = 1;
            __pyx_t_40 = __pyx_v_xt;
            __pyx_t_41 = __pyx_v_yt;
            __pyx_t_42 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_39, __pyx_pybuffernd_col.diminfo[1].strides));
+6096:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_43 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_44 = 2;
            __pyx_t_45 = __pyx_v_xt;
            __pyx_t_46 = __pyx_v_yt;
            __pyx_t_47 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_col.diminfo[1].strides));
+6097:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+6098:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 6099:         else:
+6100:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
    /*else*/ {
      __pyx_t_24 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_24) {
      } else {
        __pyx_t_22 = __pyx_t_24;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_24 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_22 = __pyx_t_24;
      __pyx_L14_bool_binop_done:;
      if (__pyx_t_22) {
/* … */
      }
    }
    __pyx_L5:;
+6101:                 xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6101, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6101, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6101, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6101, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6101, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = NULL;
        __pyx_t_25 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_23);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_23, function);
            __pyx_t_25 = 1;
          }
        }
        __pyx_t_48 = PyTuple_New(7+__pyx_t_25); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 6101, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_48);
        if (__pyx_t_1) {
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_48, 0, __pyx_t_1); __pyx_t_1 = NULL;
        }
        __Pyx_INCREF(__pyx_v_pdelNxy);
        __Pyx_GIVEREF(__pyx_v_pdelNxy);
        PyTuple_SET_ITEM(__pyx_t_48, 0+__pyx_t_25, __pyx_v_pdelNxy);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_48, 1+__pyx_t_25, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_48, 2+__pyx_t_25, __pyx_t_8);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_48, 3+__pyx_t_25, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_48, 4+__pyx_t_25, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_48, 5+__pyx_t_25, __pyx_t_5);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_48, 6+__pyx_t_25, __pyx_int_1);
        __pyx_t_8 = 0;
        __pyx_t_7 = 0;
        __pyx_t_5 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_48, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6101, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0;
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
          PyObject* sequence = __pyx_t_6;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 6101, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_48 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_48 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_48);
          #else
          __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6101, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __pyx_t_48 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 6101, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_48);
          #endif
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6101, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_49 = Py_TYPE(__pyx_t_5)->tp_iternext;
          index = 0; __pyx_t_23 = __pyx_t_49(__pyx_t_5); if (unlikely(!__pyx_t_23)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_23);
          index = 1; __pyx_t_48 = __pyx_t_49(__pyx_t_5); if (unlikely(!__pyx_t_48)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_48);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_49(__pyx_t_5), 2) < 0) __PYX_ERR(0, 6101, __pyx_L1_error)
          __pyx_t_49 = NULL;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          goto __pyx_L18_unpacking_done;
          __pyx_L17_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_49 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 6101, __pyx_L1_error)
          __pyx_L18_unpacking_done:;
        }
        if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6101, __pyx_L1_error)
        if (!(likely(((__pyx_t_48) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_48, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6101, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_23);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
            }
          }
          __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6101, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_23));
        __pyx_t_23 = 0;
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_48);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
            }
          }
          __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6101, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_48));
        __pyx_t_48 = 0;
+6102:                 w = 0
        __pyx_v_w = 0;
+6103:                 count = 0
        __pyx_v_count = 0;
+6104:                 while count < dp:
        while (1) {
          __pyx_t_22 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_22) break;
+6105:                     xt = xtrial[w]
          __pyx_t_50 = __pyx_v_w;
          __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+6106:                     yt = ytrial[w]
          __pyx_t_51 = __pyx_v_w;
          __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+6107:                     if I[xt, yt] == 0:
          __pyx_t_52 = __pyx_v_xt;
          __pyx_t_53 = __pyx_v_yt;
          __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_53, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_22) {
/* … */
          }
+6108:                         I[xt, yt] = p + count + 1
            __pyx_t_54 = __pyx_v_xt;
            __pyx_t_55 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+6109:                         X[p + count] = xt
            __pyx_t_56 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+6110:                         Y[p + count] = yt
            __pyx_t_57 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+6111:                         a[p + count] = 1
            __pyx_t_58 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6112:                         MAJ[p + count] = 1
            __pyx_t_59 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1;
+6113:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_61 = 0;
            __pyx_t_62 = __pyx_v_xt;
            __pyx_t_63 = __pyx_v_yt;
            __pyx_t_64 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_64, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_61, __pyx_pybuffernd_col.diminfo[1].strides));
+6114:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_65 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_66 = 1;
            __pyx_t_67 = __pyx_v_xt;
            __pyx_t_68 = __pyx_v_yt;
            __pyx_t_69 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_69, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_col.diminfo[1].strides));
+6115:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_70 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_71 = 2;
            __pyx_t_72 = __pyx_v_xt;
            __pyx_t_73 = __pyx_v_yt;
            __pyx_t_74 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_74, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_col.diminfo[1].strides));
+6116:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+6117:                     if w < dp - 1:
          __pyx_t_22 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
          if (__pyx_t_22) {
/* … */
            goto __pyx_L22;
          }
+6118:                         w = w + 1
            __pyx_v_w = (__pyx_v_w + 1);
 6119:                     else:
+6120:                         xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          /*else*/ {
            __pyx_t_48 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 6120, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_48);
            __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_48, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6120, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0;
            __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 6120, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_48);
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6120, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6120, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_8 = NULL;
            __pyx_t_25 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
              __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_23);
              if (likely(__pyx_t_8)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
                __Pyx_INCREF(__pyx_t_8);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_23, function);
                __pyx_t_25 = 1;
              }
            }
            __pyx_t_1 = PyTuple_New(7+__pyx_t_25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6120, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (__pyx_t_8) {
              __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
            }
            __Pyx_INCREF(__pyx_v_pdelNxy);
            __Pyx_GIVEREF(__pyx_v_pdelNxy);
            PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_25, __pyx_v_pdelNxy);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_25, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_48);
            PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_25, __pyx_t_48);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_25, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_25, __pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_1, 5+__pyx_t_25, __pyx_t_7);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_1, 6+__pyx_t_25, __pyx_int_1);
            __pyx_t_48 = 0;
            __pyx_t_5 = 0;
            __pyx_t_7 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6120, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
            if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
              PyObject* sequence = __pyx_t_6;
              #if CYTHON_COMPILING_IN_CPYTHON
              Py_ssize_t size = Py_SIZE(sequence);
              #else
              Py_ssize_t size = PySequence_Size(sequence);
              #endif
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(0, 6120, __pyx_L1_error)
              }
              #if CYTHON_COMPILING_IN_CPYTHON
              if (likely(PyTuple_CheckExact(sequence))) {
                __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
                __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
              } else {
                __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
                __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
              }
              __Pyx_INCREF(__pyx_t_23);
              __Pyx_INCREF(__pyx_t_1);
              #else
              __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6120, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_23);
              __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6120, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            } else {
              Py_ssize_t index = -1;
              __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6120, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_49 = Py_TYPE(__pyx_t_7)->tp_iternext;
              index = 0; __pyx_t_23 = __pyx_t_49(__pyx_t_7); if (unlikely(!__pyx_t_23)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_23);
              index = 1; __pyx_t_1 = __pyx_t_49(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_1);
              if (__Pyx_IternextUnpackEndCheck(__pyx_t_49(__pyx_t_7), 2) < 0) __PYX_ERR(0, 6120, __pyx_L1_error)
              __pyx_t_49 = NULL;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L24_unpacking_done;
              __pyx_L23_unpacking_failed:;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __pyx_t_49 = NULL;
              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
              __PYX_ERR(0, 6120, __pyx_L1_error)
              __pyx_L24_unpacking_done:;
            }
            if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6120, __pyx_L1_error)
            if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6120, __pyx_L1_error)
            __pyx_t_10 = ((PyArrayObject *)__pyx_t_23);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_18);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                }
              }
              __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6120, __pyx_L1_error)
            }
            __pyx_t_10 = 0;
            __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_23));
            __pyx_t_23 = 0;
            __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                }
              }
              __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6120, __pyx_L1_error)
            }
            __pyx_t_11 = 0;
            __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_1));
            __pyx_t_1 = 0;
+6121:                         w = 0
            __pyx_v_w = 0;
          }
          __pyx_L22:;
        }
+6122:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 6123: 
 6124: 
+6125:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+6126:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 6127: 
+6128:         for k in range(0, p):
    __pyx_t_75 = __pyx_v_p;
    for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_75; __pyx_t_76+=1) {
      __pyx_v_k = __pyx_t_76;
+6129:             if a[k] == 1:
      __pyx_t_77 = __pyx_v_k;
      __pyx_t_22 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_22) {
/* … */
      }
    }
+6130:                 a[k] = 0
        __pyx_t_78 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+6131:                 xo = X[k]
        __pyx_t_79 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_79, __pyx_pybuffernd_X.diminfo[0].strides));
+6132:                 yo = Y[k]
        __pyx_t_80 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_Y.diminfo[0].strides));
+6133:                 Io = I[xo, yo]
        __pyx_t_81 = __pyx_v_xo;
        __pyx_t_82 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_82, __pyx_pybuffernd_I.diminfo[1].strides));
+6134:                 Maj = MAJ[k]
        __pyx_t_83 = __pyx_v_k;
        __pyx_v_Maj = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_MAJ.diminfo[0].strides));
+6135:                 Min = Maj / R
        __pyx_v_Min = (__pyx_v_Maj / __pyx_v_R);
+6136:                 MAJceil = math.ceil(Maj)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6136, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6136, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyFloat_FromDouble(__pyx_v_Maj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6136, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_23);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_23, function);
          }
        }
        if (!__pyx_t_7) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_23, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6136, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6136, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6136, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __pyx_t_84 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_84 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6136, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_v_MAJceil = __pyx_t_84;
+6137:                 MINceil = math.ceil(Min)
        __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6137, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_ceil); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6137, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __pyx_t_23 = PyFloat_FromDouble(__pyx_v_Min); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6137, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_23); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6137, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6137, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_GIVEREF(__pyx_t_23);
          PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_23);
          __pyx_t_23 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6137, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_84 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_84 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6137, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_v_MINceil = __pyx_t_84;
+6138:                 red = col[k, 0]
        __pyx_t_84 = __pyx_v_k;
        __pyx_t_85 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_85, __pyx_pybuffernd_col.diminfo[1].strides));
+6139:                 green = col[k, 1]
        __pyx_t_86 = __pyx_v_k;
        __pyx_t_87 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_87, __pyx_pybuffernd_col.diminfo[1].strides));
+6140:                 blue = col[k, 2]
        __pyx_t_88 = __pyx_v_k;
        __pyx_t_89 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_col.diminfo[1].strides));
 6141: 
 6142: 
+6143:                 for deli in range(MAJceil + 1):
        __pyx_t_90 = (__pyx_v_MAJceil + 1);
        for (__pyx_t_91 = 0; __pyx_t_91 < __pyx_t_90; __pyx_t_91+=1) {
          __pyx_v_deli = __pyx_t_91;
+6144:                     for delj in range(MINceil + 1):
          __pyx_t_92 = (__pyx_v_MINceil + 1);
          for (__pyx_t_93 = 0; __pyx_t_93 < __pyx_t_92; __pyx_t_93+=1) {
            __pyx_v_delj = __pyx_t_93;
+6145:                         if (deli / Maj) ** 2 + (delj / Min) ** 2 < 1:
            __pyx_t_22 = (((powf((((float)__pyx_v_deli) / __pyx_v_Maj), 2.0) + powf((((float)__pyx_v_delj) / __pyx_v_Min), 2.0)) < 1.0) != 0);
            if (__pyx_t_22) {
/* … */
            }
          }
        }
+6146:                             i, j = xo + deli, yo + delj
              __pyx_t_94 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_95 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_94;
              __pyx_v_j = __pyx_t_95;
+6147:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L34_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L34_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+6148:                                 if I[i, j] == 0:
                __pyx_t_95 = __pyx_v_i;
                __pyx_t_94 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+6149:                                     if i > 0:
                  __pyx_t_22 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L37;
                  }
+6150:                                         PN = I[i - 1, j]
                    __pyx_t_97 = (__pyx_v_i - 1);
                    __pyx_t_98 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_98, __pyx_pybuffernd_I.diminfo[1].strides));
 6151:                                     else:
+6152:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L37:;
+6153:                                     if j > 0:
                  __pyx_t_22 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L38;
                  }
+6154:                                         PW = I[i, j - 1]
                    __pyx_t_99 = __pyx_v_i;
                    __pyx_t_100 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_100, __pyx_pybuffernd_I.diminfo[1].strides));
 6155:                                     else:
+6156:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L38:;
+6157:                                     if PN == Io or PW == Io:
                  __pyx_t_24 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L40_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L40_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+6158:                                         I[i, j] = Io
                    __pyx_t_101 = __pyx_v_i;
                    __pyx_t_102 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6159:                                         Col[i, j, 2] = red
                    __pyx_t_103 = __pyx_v_i;
                    __pyx_t_104 = __pyx_v_j;
                    __pyx_t_105 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_104, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_105, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6160:                                         Col[i, j, 1] = green
                    __pyx_t_106 = __pyx_v_i;
                    __pyx_t_107 = __pyx_v_j;
                    __pyx_t_108 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_108, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6161:                                         Col[i, j, 0] = blue
                    __pyx_t_109 = __pyx_v_i;
                    __pyx_t_110 = __pyx_v_j;
                    __pyx_t_111 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6162:                                         a[k] = 1
                    __pyx_t_112 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 6163: 
+6164:                             i, j = xo - deli, yo + delj
              __pyx_t_113 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_114 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_113;
              __pyx_v_j = __pyx_t_114;
+6165:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L43_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L43_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+6166:                                 if I[i, j] == 0:
                __pyx_t_114 = __pyx_v_i;
                __pyx_t_113 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+6167:                                     if i < m - 1:
                  __pyx_t_22 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L46;
                  }
+6168:                                         PS = I[i + 1, j]
                    __pyx_t_115 = (__pyx_v_i + 1);
                    __pyx_t_116 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_I.diminfo[1].strides));
 6169:                                     else:
+6170:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L46:;
+6171:                                     if j > 0:
                  __pyx_t_22 = ((__pyx_v_j > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L47;
                  }
+6172:                                         PW = I[i, j - 1]
                    __pyx_t_117 = __pyx_v_i;
                    __pyx_t_118 = (__pyx_v_j - 1);
                    __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_I.diminfo[1].strides));
 6173:                                     else:
+6174:                                         PW = 0
                  /*else*/ {
                    __pyx_v_PW = 0;
                  }
                  __pyx_L47:;
+6175:                                     if PW == Io or PS == Io:
                  __pyx_t_24 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L49_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L49_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+6176:                                         I[i, j] = Io
                    __pyx_t_119 = __pyx_v_i;
                    __pyx_t_120 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6177:                                         Col[i, j, 2] = red
                    __pyx_t_121 = __pyx_v_i;
                    __pyx_t_122 = __pyx_v_j;
                    __pyx_t_123 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6178:                                         Col[i, j, 1] = green
                    __pyx_t_124 = __pyx_v_i;
                    __pyx_t_125 = __pyx_v_j;
                    __pyx_t_126 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6179:                                         Col[i, j, 0] = blue
                    __pyx_t_127 = __pyx_v_i;
                    __pyx_t_128 = __pyx_v_j;
                    __pyx_t_129 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6180:                                         a[k] = 1
                    __pyx_t_130 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 6181: 
+6182:                             i, j = xo - deli, yo - delj
              __pyx_t_131 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_132 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_131;
              __pyx_v_j = __pyx_t_132;
+6183:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L52_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L52_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+6184:                                 if I[i, j] == 0:
                __pyx_t_132 = __pyx_v_i;
                __pyx_t_131 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_131, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+6185:                                     if i < m - 1:
                  __pyx_t_22 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L55;
                  }
+6186:                                         PS = I[i + 1, j]
                    __pyx_t_133 = (__pyx_v_i + 1);
                    __pyx_t_134 = __pyx_v_j;
                    __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides));
 6187:                                     else:
+6188:                                         PS = 0
                  /*else*/ {
                    __pyx_v_PS = 0;
                  }
                  __pyx_L55:;
+6189:                                     if j < n - 1:
                  __pyx_t_22 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L56;
                  }
+6190:                                         PE = I[i, j + 1]
                    __pyx_t_135 = __pyx_v_i;
                    __pyx_t_136 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides));
 6191:                                     else:
+6192:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L56:;
+6193:                                     if PE == Io or PS == Io:
                  __pyx_t_24 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L58_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L58_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+6194:                                         I[i, j] = Io
                    __pyx_t_137 = __pyx_v_i;
                    __pyx_t_138 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6195:                                         Col[i, j, 2] = red
                    __pyx_t_139 = __pyx_v_i;
                    __pyx_t_140 = __pyx_v_j;
                    __pyx_t_141 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6196:                                         Col[i, j, 1] = green
                    __pyx_t_142 = __pyx_v_i;
                    __pyx_t_143 = __pyx_v_j;
                    __pyx_t_144 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6197:                                         Col[i, j, 0] = blue
                    __pyx_t_145 = __pyx_v_i;
                    __pyx_t_146 = __pyx_v_j;
                    __pyx_t_147 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6198:                                         a[k] = 1
                    __pyx_t_148 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 6199: 
+6200:                             i, j = xo + deli, yo - delj
              __pyx_t_149 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_150 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_149;
              __pyx_v_j = __pyx_t_150;
+6201:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_24 = (0 <= __pyx_v_i);
              if (__pyx_t_24) {
                __pyx_t_24 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_96 = (__pyx_t_24 != 0);
              if (__pyx_t_96) {
              } else {
                __pyx_t_22 = __pyx_t_96;
                goto __pyx_L61_bool_binop_done;
              }
              __pyx_t_96 = (0 <= __pyx_v_j);
              if (__pyx_t_96) {
                __pyx_t_96 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_24 = (__pyx_t_96 != 0);
              __pyx_t_22 = __pyx_t_24;
              __pyx_L61_bool_binop_done:;
              if (__pyx_t_22) {
/* … */
              }
+6202:                                 if I[i, j] == 0:
                __pyx_t_150 = __pyx_v_i;
                __pyx_t_149 = __pyx_v_j;
                __pyx_t_22 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_149, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_22) {
/* … */
                }
+6203:                                     if i > 0:
                  __pyx_t_22 = ((__pyx_v_i > 0) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L64;
                  }
+6204:                                         PN = I[i - 1, j]
                    __pyx_t_151 = (__pyx_v_i - 1);
                    __pyx_t_152 = __pyx_v_j;
                    __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_I.diminfo[1].strides));
 6205:                                     else:
+6206:                                         PN = 0
                  /*else*/ {
                    __pyx_v_PN = 0;
                  }
                  __pyx_L64:;
+6207:                                     if j < n - 1:
                  __pyx_t_22 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                  if (__pyx_t_22) {
/* … */
                    goto __pyx_L65;
                  }
+6208:                                         PE = I[i, j + 1]
                    __pyx_t_153 = __pyx_v_i;
                    __pyx_t_154 = (__pyx_v_j + 1);
                    __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides));
 6209:                                     else:
+6210:                                         PE = 0
                  /*else*/ {
                    __pyx_v_PE = 0;
                  }
                  __pyx_L65:;
+6211:                                     if PN == Io or PE == Io:
                  __pyx_t_24 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                  if (!__pyx_t_24) {
                  } else {
                    __pyx_t_22 = __pyx_t_24;
                    goto __pyx_L67_bool_binop_done;
                  }
                  __pyx_t_24 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                  __pyx_t_22 = __pyx_t_24;
                  __pyx_L67_bool_binop_done:;
                  if (__pyx_t_22) {
/* … */
                  }
+6212:                                         I[i, j] = Io
                    __pyx_t_155 = __pyx_v_i;
                    __pyx_t_156 = __pyx_v_j;
                    *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6213:                                         Col[i, j, 2] = red
                    __pyx_t_157 = __pyx_v_i;
                    __pyx_t_158 = __pyx_v_j;
                    __pyx_t_159 = 2;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6214:                                         Col[i, j, 1] = green
                    __pyx_t_160 = __pyx_v_i;
                    __pyx_t_161 = __pyx_v_j;
                    __pyx_t_162 = 1;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6215:                                         Col[i, j, 0] = blue
                    __pyx_t_163 = __pyx_v_i;
                    __pyx_t_164 = __pyx_v_j;
                    __pyx_t_165 = 0;
                    *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6216:                                         a[k] = 1
                    __pyx_t_166 = __pyx_v_k;
                    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_166, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 6217: 
+6218:                 if a[k] == 0:
        __pyx_t_90 = __pyx_v_k;
        __pyx_t_22 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
        if (__pyx_t_22) {
/* … */
        }
+6219:                     xmin = max(0, xo - MAJceil)
          __pyx_t_91 = (__pyx_v_xo - __pyx_v_MAJceil);
          __pyx_t_167 = 0;
          if (((__pyx_t_91 > __pyx_t_167) != 0)) {
            __pyx_t_92 = __pyx_t_91;
          } else {
            __pyx_t_92 = __pyx_t_167;
          }
          __pyx_v_xmin = __pyx_t_92;
+6220:                     xmax = min(m - 1, xo + MAJceil)
          __pyx_t_92 = (__pyx_v_xo + __pyx_v_MAJceil);
          __pyx_t_91 = (__pyx_v_m - 1);
          if (((__pyx_t_92 < __pyx_t_91) != 0)) {
            __pyx_t_93 = __pyx_t_92;
          } else {
            __pyx_t_93 = __pyx_t_91;
          }
          __pyx_v_xmax = __pyx_t_93;
+6221:                     ymin = max(0, yo - MINceil)
          __pyx_t_93 = (__pyx_v_yo - __pyx_v_MINceil);
          __pyx_t_167 = 0;
          if (((__pyx_t_93 > __pyx_t_167) != 0)) {
            __pyx_t_92 = __pyx_t_93;
          } else {
            __pyx_t_92 = __pyx_t_167;
          }
          __pyx_v_ymin = __pyx_t_92;
+6222:                     ymax = min(n - 1, yo + MINceil)
          __pyx_t_92 = (__pyx_v_yo + __pyx_v_MINceil);
          __pyx_t_93 = (__pyx_v_n - 1);
          if (((__pyx_t_92 < __pyx_t_93) != 0)) {
            __pyx_t_91 = __pyx_t_92;
          } else {
            __pyx_t_91 = __pyx_t_93;
          }
          __pyx_v_ymax = __pyx_t_91;
+6223:                     a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
          __pyx_t_91 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 6224: 
 6225: 
+6226:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+6227:         for i in range(p):
    __pyx_t_75 = __pyx_v_p;
    for (__pyx_t_76 = 0; __pyx_t_76 < __pyx_t_75; __pyx_t_76+=1) {
      __pyx_v_i = __pyx_t_76;
+6228:             MAJ[i] = MAJ[i] + 1
      __pyx_t_92 = __pyx_v_i;
      __pyx_t_93 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + 1);
    }
+6229:         nnz = cv2.countNonZero(I)
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_23 = PyTuple_New(1+1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_23, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_23, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_75 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_75 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6229, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_nnz = __pyx_t_75;
  }
 6230: 
+6231:     obj.p = p
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_6) < 0) __PYX_ERR(0, 6231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+6232:     toc = time.time()
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_time); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_23);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_23, function);
    }
  }
  if (__pyx_t_7) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_23, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6232, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else {
    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_23); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6232, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_21 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 6232, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_toc = __pyx_t_21;
+6233:     obj.exetime = toc - tic
  __pyx_t_6 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_6) < 0) __PYX_ERR(0, 6233, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+6234:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_delete); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_arange); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_48);
  __pyx_t_8 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_168 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_168)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_168);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_168, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_168, 0+__pyx_t_25, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_48);
  PyTuple_SET_ITEM(__pyx_t_168, 1+__pyx_t_25, __pyx_t_48);
  __pyx_t_5 = 0;
  __pyx_t_48 = 0;
  __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_168, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __Pyx_DECREF(__pyx_t_168); __pyx_t_168 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_168 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_168)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_168);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_168, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_168, 0+__pyx_t_25, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_23);
  PyTuple_SET_ITEM(__pyx_t_168, 1+__pyx_t_25, __pyx_t_23);
  __pyx_t_23 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_168, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_168); __pyx_t_168 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_6) < 0) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+6235:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_168 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_delete); if (unlikely(!__pyx_t_168)) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_168);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_arange); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
  __pyx_t_23 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_48 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_48);
  __pyx_t_5 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_23);
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_25, __pyx_t_23);
  __Pyx_GIVEREF(__pyx_t_48);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_25, __pyx_t_48);
  __pyx_t_23 = 0;
  __pyx_t_48 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_168))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_168);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_168);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_168, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_8 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_25, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_25, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_168, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_168); __pyx_t_168 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_6) < 0) __PYX_ERR(0, 6235, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+6236:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 6236, __pyx_L1_error)
+6237:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 6237, __pyx_L1_error)
+6238:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 6239: 
 6240: 
+6241: def Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_47Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_47Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot = {"Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot", (PyCFunction)__pyx_pw_9libEVOLVE_47Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_47Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_46Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_46Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  float __pyx_v_R;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  PyObject *__pyx_v_Thetafunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_delX;
  PY_LONG_LONG __pyx_v_delY;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_Min;
  float __pyx_v_Maj;
  float __pyx_v_theta;
  float __pyx_v_c;
  float __pyx_v_s;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Theta = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Theta;
  __Pyx_Buffer __pyx_pybuffer_Theta;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot", 0);
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Theta.pybuffer.buf = NULL;
  __pyx_pybuffer_Theta.refcount = 0;
  __pyx_pybuffernd_Theta.data = NULL;
  __pyx_pybuffernd_Theta.rcbuffer = &__pyx_pybuffer_Theta;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_24);
  __Pyx_XDECREF(__pyx_t_34);
  __Pyx_XDECREF(__pyx_t_334);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF(__pyx_v_Thetafunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Theta);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__57 = PyTuple_Pack(68, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_R, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_Thetafunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_rad, __pyx_n_s_countim, __pyx_n_s_w, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_delX, __pyx_n_s_delY, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_dum, __pyx_n_s_Iter, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_tmp, __pyx_n_s_Min, __pyx_n_s_Maj, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_MAJ, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Theta, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 6241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__57);
  __Pyx_GIVEREF(__pyx_tuple__57);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_47Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_without_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_6, __pyx_t_2) < 0) __PYX_ERR(0, 6241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(1, 0, 68, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_6, 6241, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 6241, __pyx_L1_error)
 6242:     # Grabbing data from the input object
+6243:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+6244:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+6245:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6245, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+6246:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6246, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+6247:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+6248:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+6249:     cdef float R = obj.R
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_R); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6249, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_R = __pyx_t_3;
+6250:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6250, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+6251:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+6252:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+6253:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+6254:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+6255:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+6256:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
+6257:     Thetafunc = obj.Thetafunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Thetafunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Thetafunc = __pyx_t_1;
  __pyx_t_1 = 0;
 6258: 
 6259:     # Declaring other variables
 6260:     cdef double tic, toc
 6261:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, dp, nnz, rad, countim, w, xt, yt, i, j, k, xo, yo, delX, delY, xmin, xmax, ymin, ymax, dum, Iter
 6262:     cdef float dt, f, t, tmp, Min, Maj, theta, c, s, red, green, blue
+6263:     cdef np.ndarray[np.int64_t, ndim = 1] MAJ = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 6263, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6263, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6263, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+6264:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 6264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6264, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6264, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+6265:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6265, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6265, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6265, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6266:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6266, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6266, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6267:     cdef np.ndarray[np.int_t, ndim = 1] a = np.ones(MN, dtype=np.int)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6267, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6267, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6268:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 6268, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6268, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6268, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+6269:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 6269, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6269, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6269, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+6270:     cdef np.ndarray[np.float64_t, ndim = 1] Theta = np.zeros(MN, dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6270, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6270, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Theta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6270, __pyx_L1_error)
    } else {__pyx_pybuffernd_Theta.diminfo[0].strides = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Theta.diminfo[0].shape = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Theta = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6271:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6271, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6271, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6272:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6272, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6272, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6272, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6273:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6273, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+6274:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6274, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6274, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6274, __pyx_L1_error)
  }
  __pyx_t_18 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_1));
  __pyx_t_1 = 0;
+6275:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6275, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6275, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 6275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tic = __pyx_t_22;
 6276: 
 6277: 
 6278: 
+6279:     t = 0
  __pyx_v_t = 0.0;
+6280:     p = 0
  __pyx_v_p = 0;
+6281:     dp = 0
  __pyx_v_dp = 0;
+6282:     countim = 0
  __pyx_v_countim = 0;
+6283:     nnz = 0
  __pyx_v_nnz = 0;
+6284:     Iter = 1
  __pyx_v_Iter = 1;
+6285:     while nnz < MN:
  while (1) {
    __pyx_t_23 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_23) break;
+6286:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+6287:         dt = 1.0 / Gt(t)
    __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_6 = __pyx_v_Gt; __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6287, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6287, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6287, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_1, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6287, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_dt = __pyx_t_3;
+6288:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_6 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_7 = __pyx_v_Ndot; __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6288, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_24 = PyTuple_New(1+1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6288, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_24);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_24, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_24, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6288, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyNumber_Multiply(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6288, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_dp = __pyx_t_2;
+6289:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+6290:         if pdelNxy == []:
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6290, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 6290, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_23) {
/* … */
      goto __pyx_L5;
    }
+6291:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
      __pyx_t_25 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_25) {
      } else {
        __pyx_t_23 = __pyx_t_25;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_25 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_25) {
      } else {
        __pyx_t_23 = __pyx_t_25;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_25 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_23 = __pyx_t_25;
      __pyx_L7_bool_binop_done:;
      if (__pyx_t_23) {
/* … */
      }
+6292:                 count = 0
        __pyx_v_count = 0;
+6293:                 while count < dp:
        while (1) {
          __pyx_t_23 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_23) break;
+6294:                     xt = np.random.randint(0, m - 1)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6294, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6294, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_randint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6294, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6294, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_24 = NULL;
          __pyx_t_26 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_24)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_24);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
              __pyx_t_26 = 1;
            }
          }
          __pyx_t_8 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6294, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          if (__pyx_t_24) {
            __Pyx_GIVEREF(__pyx_t_24); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_24); __pyx_t_24 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_26, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_26, __pyx_t_7);
          __pyx_t_7 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6294, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6294, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_xt = __pyx_t_2;
+6295:                     yt = np.random.randint(0, n - 1)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_randint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_7 = NULL;
          __pyx_t_26 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
              __pyx_t_26 = 1;
            }
          }
          __pyx_t_24 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_24);
          if (__pyx_t_7) {
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_7); __pyx_t_7 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_24, 0+__pyx_t_26, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_24, 1+__pyx_t_26, __pyx_t_8);
          __pyx_t_8 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_24, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_yt = __pyx_t_2;
+6296:                     if I[xt, yt] == 0:
          __pyx_t_2 = __pyx_v_xt;
          __pyx_t_27 = __pyx_v_yt;
          __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_27, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_23) {
/* … */
          }
        }
+6297:                         I[xt, yt] = p + count + 1
            __pyx_t_28 = __pyx_v_xt;
            __pyx_t_29 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_29, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+6298:                         X[p + count] = xt
            __pyx_t_30 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+6299:                         Y[p + count] = yt
            __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+6300:                         a[p + count] = 1
            __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6301:                         MAJ[p + count] = 1
            __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1;
+6302:                         Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, 1)
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6302, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6302, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_24);
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6302, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_INCREF(__pyx_v_Thetafunc);
            __pyx_t_7 = __pyx_v_Thetafunc; __pyx_t_5 = NULL;
            __pyx_t_26 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_7, function);
                __pyx_t_26 = 1;
              }
            }
            __pyx_t_34 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6302, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_34, 0+__pyx_t_26, __pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_24);
            PyTuple_SET_ITEM(__pyx_t_34, 1+__pyx_t_26, __pyx_t_24);
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_34, 2+__pyx_t_26, __pyx_t_8);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_34, 3+__pyx_t_26, __pyx_int_1);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_34, 4+__pyx_t_26, __pyx_int_1);
            __pyx_t_1 = 0;
            __pyx_t_24 = 0;
            __pyx_t_8 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_34, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6302, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 6302, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_36 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_35;
+6303:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_37 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_38 = 0;
            __pyx_t_39 = __pyx_v_xt;
            __pyx_t_40 = __pyx_v_yt;
            __pyx_t_41 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_col.diminfo[1].strides));
+6304:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_42 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_43 = 1;
            __pyx_t_44 = __pyx_v_xt;
            __pyx_t_45 = __pyx_v_yt;
            __pyx_t_46 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_col.diminfo[1].strides));
+6305:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_47 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_48 = 2;
            __pyx_t_49 = __pyx_v_xt;
            __pyx_t_50 = __pyx_v_yt;
            __pyx_t_51 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_col.diminfo[1].strides));
+6306:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+6307:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 6308:         else:
+6309:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
    /*else*/ {
      __pyx_t_25 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_25) {
      } else {
        __pyx_t_23 = __pyx_t_25;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_25 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_25) {
      } else {
        __pyx_t_23 = __pyx_t_25;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_25 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_23 = __pyx_t_25;
      __pyx_L14_bool_binop_done:;
      if (__pyx_t_23) {
/* … */
      }
    }
    __pyx_L5:;
+6310:                 xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6310, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6310, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_34);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6310, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6310, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6310, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_24);
        __pyx_t_1 = NULL;
        __pyx_t_26 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_34);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_34, function);
            __pyx_t_26 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(7+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6310, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_1) {
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
        }
        __Pyx_INCREF(__pyx_v_pdelNxy);
        __Pyx_GIVEREF(__pyx_v_pdelNxy);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, __pyx_v_pdelNxy);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_26, __pyx_t_7);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_26, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_26, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_24);
        PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_26, __pyx_t_24);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_26, __pyx_int_1);
        __pyx_t_7 = 0;
        __pyx_t_8 = 0;
        __pyx_t_24 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6310, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
          PyObject* sequence = __pyx_t_6;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 6310, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_34 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_34 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_34);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_34 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6310, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_34);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6310, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_24 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6310, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_24);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_52 = Py_TYPE(__pyx_t_24)->tp_iternext;
          index = 0; __pyx_t_34 = __pyx_t_52(__pyx_t_24); if (unlikely(!__pyx_t_34)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_34);
          index = 1; __pyx_t_5 = __pyx_t_52(__pyx_t_24); if (unlikely(!__pyx_t_5)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_52(__pyx_t_24), 2) < 0) __PYX_ERR(0, 6310, __pyx_L1_error)
          __pyx_t_52 = NULL;
          __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
          goto __pyx_L18_unpacking_done;
          __pyx_L17_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
          __pyx_t_52 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 6310, __pyx_L1_error)
          __pyx_L18_unpacking_done:;
        }
        if (!(likely(((__pyx_t_34) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_34, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6310, __pyx_L1_error)
        if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6310, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_34);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            }
          }
          __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6310, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_34));
        __pyx_t_34 = 0;
        __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            }
          }
          __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6310, __pyx_L1_error)
        }
        __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_5));
        __pyx_t_5 = 0;
+6311:                 w = 0
        __pyx_v_w = 0;
+6312:                 count = 0
        __pyx_v_count = 0;
+6313:                 while count < dp:
        while (1) {
          __pyx_t_23 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_23) break;
+6314:                     xt = xtrial[w]
          __pyx_t_53 = __pyx_v_w;
          __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+6315:                     yt = ytrial[w]
          __pyx_t_54 = __pyx_v_w;
          __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+6316:                     if I[xt, yt] == 0:
          __pyx_t_55 = __pyx_v_xt;
          __pyx_t_56 = __pyx_v_yt;
          __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_56, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_23) {
/* … */
          }
+6317:                         I[xt, yt] = p + count + 1
            __pyx_t_57 = __pyx_v_xt;
            __pyx_t_58 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_58, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+6318:                         X[p + count] = xt
            __pyx_t_59 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+6319:                         Y[p + count] = yt
            __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+6320:                         a[p + count] = 1
            __pyx_t_61 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6321:                         MAJ[p + count] = 1
            __pyx_t_62 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1;
+6322:                         Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1 , 1)
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6322, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6322, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6322, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_24);
            __Pyx_INCREF(__pyx_v_Thetafunc);
            __pyx_t_8 = __pyx_v_Thetafunc; __pyx_t_7 = NULL;
            __pyx_t_26 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
              __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
              if (likely(__pyx_t_7)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_7);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_8, function);
                __pyx_t_26 = 1;
              }
            }
            __pyx_t_1 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6322, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (__pyx_t_7) {
              __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
            }
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_26, __pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_34);
            PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_26, __pyx_t_34);
            __Pyx_GIVEREF(__pyx_t_24);
            PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_26, __pyx_t_24);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_26, __pyx_int_1);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_26, __pyx_int_1);
            __pyx_t_5 = 0;
            __pyx_t_34 = 0;
            __pyx_t_24 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6322, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 6322, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_63 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_35;
+6323:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_64 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_65 = 0;
            __pyx_t_66 = __pyx_v_xt;
            __pyx_t_67 = __pyx_v_yt;
            __pyx_t_68 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_67, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_68, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_65, __pyx_pybuffernd_col.diminfo[1].strides));
+6324:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_69 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_70 = 1;
            __pyx_t_71 = __pyx_v_xt;
            __pyx_t_72 = __pyx_v_yt;
            __pyx_t_73 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_73, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_70, __pyx_pybuffernd_col.diminfo[1].strides));
+6325:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_74 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_75 = 2;
            __pyx_t_76 = __pyx_v_xt;
            __pyx_t_77 = __pyx_v_yt;
            __pyx_t_78 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_col.diminfo[1].strides));
+6326:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+6327:                     if w < dp - 1:
          __pyx_t_23 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
          if (__pyx_t_23) {
/* … */
            goto __pyx_L22;
          }
+6328:                         w = w + 1
            __pyx_v_w = (__pyx_v_w + 1);
 6329:                     else:
+6330:                         xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          /*else*/ {
            __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6330, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6330, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6330, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6330, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_24);
            __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6330, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            __pyx_t_5 = NULL;
            __pyx_t_26 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
                __pyx_t_26 = 1;
              }
            }
            __pyx_t_7 = PyTuple_New(7+__pyx_t_26); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6330, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            if (__pyx_t_5) {
              __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
            }
            __Pyx_INCREF(__pyx_v_pdelNxy);
            __Pyx_GIVEREF(__pyx_v_pdelNxy);
            PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_26, __pyx_v_pdelNxy);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_26, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_26, __pyx_t_8);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_26, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_24);
            PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_26, __pyx_t_24);
            __Pyx_GIVEREF(__pyx_t_34);
            PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_26, __pyx_t_34);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_26, __pyx_int_1);
            __pyx_t_8 = 0;
            __pyx_t_24 = 0;
            __pyx_t_34 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6330, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
              PyObject* sequence = __pyx_t_6;
              #if CYTHON_COMPILING_IN_CPYTHON
              Py_ssize_t size = Py_SIZE(sequence);
              #else
              Py_ssize_t size = PySequence_Size(sequence);
              #endif
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(0, 6330, __pyx_L1_error)
              }
              #if CYTHON_COMPILING_IN_CPYTHON
              if (likely(PyTuple_CheckExact(sequence))) {
                __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
                __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
              } else {
                __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
                __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
              }
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_7);
              #else
              __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6330, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6330, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              #endif
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            } else {
              Py_ssize_t index = -1;
              __pyx_t_34 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6330, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_34);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_52 = Py_TYPE(__pyx_t_34)->tp_iternext;
              index = 0; __pyx_t_1 = __pyx_t_52(__pyx_t_34); if (unlikely(!__pyx_t_1)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_1);
              index = 1; __pyx_t_7 = __pyx_t_52(__pyx_t_34); if (unlikely(!__pyx_t_7)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_7);
              if (__Pyx_IternextUnpackEndCheck(__pyx_t_52(__pyx_t_34), 2) < 0) __PYX_ERR(0, 6330, __pyx_L1_error)
              __pyx_t_52 = NULL;
              __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
              goto __pyx_L24_unpacking_done;
              __pyx_L23_unpacking_failed:;
              __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
              __pyx_t_52 = NULL;
              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
              __PYX_ERR(0, 6330, __pyx_L1_error)
              __pyx_L24_unpacking_done:;
            }
            if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6330, __pyx_L1_error)
            if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6330, __pyx_L1_error)
            __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
                }
              }
              __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6330, __pyx_L1_error)
            }
            __pyx_t_10 = 0;
            __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_1));
            __pyx_t_1 = 0;
            __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
                }
              }
              __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6330, __pyx_L1_error)
            }
            __pyx_t_11 = 0;
            __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_7));
            __pyx_t_7 = 0;
+6331:                         w = 0
            __pyx_v_w = 0;
          }
          __pyx_L22:;
        }
+6332:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 6333: 
 6334: 
+6335:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+6336:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 6337: 
+6338:         for k in range(0, p):
    __pyx_t_79 = __pyx_v_p;
    for (__pyx_t_80 = 0; __pyx_t_80 < __pyx_t_79; __pyx_t_80+=1) {
      __pyx_v_k = __pyx_t_80;
+6339:             if a[k] == 1:
      __pyx_t_81 = __pyx_v_k;
      __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_23) {
/* … */
      }
    }
+6340:                 a[k] = 0
        __pyx_t_82 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+6341:                 xo = X[k]
        __pyx_t_83 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_X.diminfo[0].strides));
+6342:                 yo = Y[k]
        __pyx_t_84 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_Y.diminfo[0].strides));
+6343:                 Io = I[xo, yo]
        __pyx_t_85 = __pyx_v_xo;
        __pyx_t_86 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides));
+6344:                 theta = Theta[k]
        __pyx_t_87 = __pyx_v_k;
        __pyx_v_theta = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_Theta.diminfo[0].strides));
+6345:                 c = math.cos(theta)
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6345, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_cos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6345, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6345, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_34 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_34)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_34);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_34) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6345, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_24 = PyTuple_New(1+1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6345, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_24);
          __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_34); __pyx_t_34 = NULL;
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_24, 0+1, __pyx_t_7);
          __pyx_t_7 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_24, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6345, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6345, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_v_c = __pyx_t_3;
+6346:                 s = -math.sin(theta)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6346, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sin); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6346, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_24);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6346, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_24))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_24);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_24);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_24, function);
          }
        }
        if (!__pyx_t_7) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_24, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6346, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_34 = PyTuple_New(1+1); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6346, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_34);
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_7); __pyx_t_7 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_34, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_24, __pyx_t_34, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6346, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
        }
        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
        __pyx_t_24 = PyNumber_Negative(__pyx_t_6); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6346, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_24);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_24); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6346, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
        __pyx_v_s = __pyx_t_3;
+6347:                 Maj = MAJ[k]
        __pyx_t_88 = __pyx_v_k;
        __pyx_v_Maj = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_MAJ.diminfo[0].strides));
+6348:                 Min = Maj / R
        __pyx_v_Min = (__pyx_v_Maj / __pyx_v_R);
+6349:                 delX = math.ceil(math.sqrt((Maj * c) ** 2 + (Min * s) ** 2))
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_34);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyFloat_FromDouble((powf((__pyx_v_Maj * __pyx_v_c), 2.0) + powf((__pyx_v_Min * __pyx_v_s), 2.0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6349, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6349, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6349, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_34);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_34, function);
          }
        }
        if (!__pyx_t_7) {
          __pyx_t_24 = __Pyx_PyObject_CallOneArg(__pyx_t_34, __pyx_t_6); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6349, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_24);
        } else {
          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6349, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_24 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_5, NULL); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6349, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_24);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
        __pyx_t_89 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_24); if (unlikely((__pyx_t_89 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6349, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
        __pyx_v_delX = __pyx_t_89;
+6350:                 delY = math.ceil(math.sqrt((Maj * s) ** 2 + (Min * c) ** 2))
        __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6350, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_34);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_34, __pyx_n_s_ceil); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6350, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6350, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6350, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyFloat_FromDouble((powf((__pyx_v_Maj * __pyx_v_s), 2.0) + powf((__pyx_v_Min * __pyx_v_c), 2.0))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6350, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_34 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6350, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_34);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6350, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_34 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6350, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_34);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (!__pyx_t_7) {
          __pyx_t_24 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_34); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6350, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
          __Pyx_GOTREF(__pyx_t_24);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6350, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
          __Pyx_GIVEREF(__pyx_t_34);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_34);
          __pyx_t_34 = 0;
          __pyx_t_24 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6350, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_24);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_89 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_24); if (unlikely((__pyx_t_89 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6350, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
        __pyx_v_delY = __pyx_t_89;
+6351:                 red = col[k, 0]
        __pyx_t_89 = __pyx_v_k;
        __pyx_t_90 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_90, __pyx_pybuffernd_col.diminfo[1].strides));
+6352:                 green = col[k, 1]
        __pyx_t_91 = __pyx_v_k;
        __pyx_t_92 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_92, __pyx_pybuffernd_col.diminfo[1].strides));
+6353:                 blue = col[k, 2]
        __pyx_t_93 = __pyx_v_k;
        __pyx_t_94 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_col.diminfo[1].strides));
 6354: 
+6355:                 for deli in range(0, delX + 1):
        __pyx_t_95 = (__pyx_v_delX + 1);
        for (__pyx_t_96 = 0; __pyx_t_96 < __pyx_t_95; __pyx_t_96+=1) {
          __pyx_v_deli = __pyx_t_96;
+6356:                     for delj in range(0, delY + 1):
          __pyx_t_97 = (__pyx_v_delY + 1);
          for (__pyx_t_98 = 0; __pyx_t_98 < __pyx_t_97; __pyx_t_98+=1) {
            __pyx_v_delj = __pyx_t_98;
+6357:                         if ((deli * c - delj * s) / Maj) ** 2 + ((deli * s + delj * c) / Min) ** 2 < 1:
            __pyx_t_23 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_Maj), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_Min), 2.0)) < 1.0) != 0);
            if (__pyx_t_23) {
/* … */
            }
          }
        }
 6358: 
+6359:                             i, j = xo + deli, yo + delj
              __pyx_t_99 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_100 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_99;
              __pyx_v_j = __pyx_t_100;
+6360:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_25 = (0 <= __pyx_v_i);
              if (__pyx_t_25) {
                __pyx_t_25 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_101 = (__pyx_t_25 != 0);
              if (__pyx_t_101) {
              } else {
                __pyx_t_23 = __pyx_t_101;
                goto __pyx_L34_bool_binop_done;
              }
              __pyx_t_101 = (0 <= __pyx_v_j);
              if (__pyx_t_101) {
                __pyx_t_101 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_25 = (__pyx_t_101 != 0);
              __pyx_t_23 = __pyx_t_25;
              __pyx_L34_bool_binop_done:;
              if (__pyx_t_23) {
/* … */
              }
+6361:                                 if I[i, j] == 0:
                __pyx_t_100 = __pyx_v_i;
                __pyx_t_99 = __pyx_v_j;
                __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_100, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_23) {
/* … */
                }
+6362:                                     for dum in range(1):
                  for (__pyx_t_102 = 0; __pyx_t_102 < 1; __pyx_t_102+=1) {
                    __pyx_v_dum = __pyx_t_102;
 6363: 
+6364:                                         if i > 0:
                    __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6365:                                             if  I[i - 1, j] == Io:
                      __pyx_t_103 = (__pyx_v_i - 1);
                      __pyx_t_104 = __pyx_v_j;
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_104, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6366:                                                 I[i, j] = Io
                        __pyx_t_105 = __pyx_v_i;
                        __pyx_t_106 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_105, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6367:                                                 Col[i, j, 2] = red
                        __pyx_t_107 = __pyx_v_i;
                        __pyx_t_108 = __pyx_v_j;
                        __pyx_t_109 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6368:                                                 Col[i, j, 1] = green
                        __pyx_t_110 = __pyx_v_i;
                        __pyx_t_111 = __pyx_v_j;
                        __pyx_t_112 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_112, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6369:                                                 Col[i, j, 0] = blue
                        __pyx_t_113 = __pyx_v_i;
                        __pyx_t_114 = __pyx_v_j;
                        __pyx_t_115 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6370:                                                 a[k] = 1
                        __pyx_t_116 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_116, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6371:                                                 break
                        goto __pyx_L38_break;
+6372:                                         if j > 0:
                    __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6373:                                             if I[i, j - 1] == Io:
                      __pyx_t_117 = __pyx_v_i;
                      __pyx_t_118 = (__pyx_v_j - 1);
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6374:                                                 I[i, j] = Io
                        __pyx_t_119 = __pyx_v_i;
                        __pyx_t_120 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6375:                                                 Col[i, j, 2] = red
                        __pyx_t_121 = __pyx_v_i;
                        __pyx_t_122 = __pyx_v_j;
                        __pyx_t_123 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6376:                                                 Col[i, j, 1] = green
                        __pyx_t_124 = __pyx_v_i;
                        __pyx_t_125 = __pyx_v_j;
                        __pyx_t_126 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6377:                                                 Col[i, j, 0] = blue
                        __pyx_t_127 = __pyx_v_i;
                        __pyx_t_128 = __pyx_v_j;
                        __pyx_t_129 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6378:                                                 a[k] = 1
                        __pyx_t_130 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6379:                                                 break
                        goto __pyx_L38_break;
 6380: 
+6381:                                         if j < n - 1:
                    __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6382:                                             if I[i, j + 1] == Io:
                      __pyx_t_131 = __pyx_v_i;
                      __pyx_t_132 = (__pyx_v_j + 1);
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6383:                                                 I[i, j] = Io
                        __pyx_t_133 = __pyx_v_i;
                        __pyx_t_134 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6384:                                                 Col[i, j, 2] = red
                        __pyx_t_135 = __pyx_v_i;
                        __pyx_t_136 = __pyx_v_j;
                        __pyx_t_137 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6385:                                                 Col[i, j, 1] = green
                        __pyx_t_138 = __pyx_v_i;
                        __pyx_t_139 = __pyx_v_j;
                        __pyx_t_140 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6386:                                                 Col[i, j, 0] = blue
                        __pyx_t_141 = __pyx_v_i;
                        __pyx_t_142 = __pyx_v_j;
                        __pyx_t_143 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6387:                                                 a[k] = 1
                        __pyx_t_144 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_144, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6388:                                                 break
                        goto __pyx_L38_break;
 6389: 
 6390: 
+6391:                                         if i < m - 1:
                    __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L38_break:;
+6392:                                             if  I[i + 1, j] == Io:
                      __pyx_t_145 = (__pyx_v_i + 1);
                      __pyx_t_146 = __pyx_v_j;
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6393:                                                 I[i, j] = Io
                        __pyx_t_147 = __pyx_v_i;
                        __pyx_t_148 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_148, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6394:                                                 Col[i, j, 2] = red
                        __pyx_t_149 = __pyx_v_i;
                        __pyx_t_150 = __pyx_v_j;
                        __pyx_t_151 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_150, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_151, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6395:                                                 Col[i, j, 1] = green
                        __pyx_t_152 = __pyx_v_i;
                        __pyx_t_153 = __pyx_v_j;
                        __pyx_t_154 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_152, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_153, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_154, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6396:                                                 Col[i, j, 0] = blue
                        __pyx_t_155 = __pyx_v_i;
                        __pyx_t_156 = __pyx_v_j;
                        __pyx_t_157 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_156, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_157, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6397:                                                 a[k] = 1
                        __pyx_t_158 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_158, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6398:                                                 break
                        goto __pyx_L38_break;
 6399: 
 6400: 
+6401:                             i, j = xo - deli, yo - delj
              __pyx_t_102 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_159 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_102;
              __pyx_v_j = __pyx_t_159;
+6402:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_25 = (0 <= __pyx_v_i);
              if (__pyx_t_25) {
                __pyx_t_25 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_101 = (__pyx_t_25 != 0);
              if (__pyx_t_101) {
              } else {
                __pyx_t_23 = __pyx_t_101;
                goto __pyx_L48_bool_binop_done;
              }
              __pyx_t_101 = (0 <= __pyx_v_j);
              if (__pyx_t_101) {
                __pyx_t_101 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_25 = (__pyx_t_101 != 0);
              __pyx_t_23 = __pyx_t_25;
              __pyx_L48_bool_binop_done:;
              if (__pyx_t_23) {
/* … */
              }
+6403:                                 if I[i, j] == 0:
                __pyx_t_159 = __pyx_v_i;
                __pyx_t_102 = __pyx_v_j;
                __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_23) {
/* … */
                }
+6404:                                     for dum in range(1):
                  for (__pyx_t_160 = 0; __pyx_t_160 < 1; __pyx_t_160+=1) {
                    __pyx_v_dum = __pyx_t_160;
 6405: 
+6406:                                         if i > 0:
                    __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6407:                                             if  I[i - 1, j] == Io:
                      __pyx_t_161 = (__pyx_v_i - 1);
                      __pyx_t_162 = __pyx_v_j;
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_161, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_162, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6408:                                                 I[i, j] = Io
                        __pyx_t_163 = __pyx_v_i;
                        __pyx_t_164 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_164, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6409:                                                 Col[i, j, 2] = red
                        __pyx_t_165 = __pyx_v_i;
                        __pyx_t_166 = __pyx_v_j;
                        __pyx_t_167 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6410:                                                 Col[i, j, 1] = green
                        __pyx_t_168 = __pyx_v_i;
                        __pyx_t_169 = __pyx_v_j;
                        __pyx_t_170 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_170, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6411:                                                 Col[i, j, 0] = blue
                        __pyx_t_171 = __pyx_v_i;
                        __pyx_t_172 = __pyx_v_j;
                        __pyx_t_173 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_172, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_173, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6412:                                                 a[k] = 1
                        __pyx_t_174 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_174, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6413:                                                 break
                        goto __pyx_L52_break;
+6414:                                         if j > 0:
                    __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6415:                                             if I[i, j - 1] == Io:
                      __pyx_t_175 = __pyx_v_i;
                      __pyx_t_176 = (__pyx_v_j - 1);
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_176, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6416:                                                 I[i, j] = Io
                        __pyx_t_177 = __pyx_v_i;
                        __pyx_t_178 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_178, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6417:                                                 Col[i, j, 2] = red
                        __pyx_t_179 = __pyx_v_i;
                        __pyx_t_180 = __pyx_v_j;
                        __pyx_t_181 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_180, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_181, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6418:                                                 Col[i, j, 1] = green
                        __pyx_t_182 = __pyx_v_i;
                        __pyx_t_183 = __pyx_v_j;
                        __pyx_t_184 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_183, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6419:                                                 Col[i, j, 0] = blue
                        __pyx_t_185 = __pyx_v_i;
                        __pyx_t_186 = __pyx_v_j;
                        __pyx_t_187 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6420:                                                 a[k] = 1
                        __pyx_t_188 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_188, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6421:                                                 break
                        goto __pyx_L52_break;
 6422: 
+6423:                                         if j < n - 1:
                    __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6424:                                             if I[i, j + 1] == Io:
                      __pyx_t_189 = __pyx_v_i;
                      __pyx_t_190 = (__pyx_v_j + 1);
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_189, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_190, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6425:                                                 I[i, j] = Io
                        __pyx_t_191 = __pyx_v_i;
                        __pyx_t_192 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_191, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_192, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6426:                                                 Col[i, j, 2] = red
                        __pyx_t_193 = __pyx_v_i;
                        __pyx_t_194 = __pyx_v_j;
                        __pyx_t_195 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_193, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_194, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_195, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6427:                                                 Col[i, j, 1] = green
                        __pyx_t_196 = __pyx_v_i;
                        __pyx_t_197 = __pyx_v_j;
                        __pyx_t_198 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_196, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_197, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_198, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6428:                                                 Col[i, j, 0] = blue
                        __pyx_t_199 = __pyx_v_i;
                        __pyx_t_200 = __pyx_v_j;
                        __pyx_t_201 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_199, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_200, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_201, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6429:                                                 a[k] = 1
                        __pyx_t_202 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_202, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6430:                                                 break
                        goto __pyx_L52_break;
 6431: 
 6432: 
+6433:                                         if i < m - 1:
                    __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L52_break:;
+6434:                                             if  I[i + 1, j] == Io:
                      __pyx_t_203 = (__pyx_v_i + 1);
                      __pyx_t_204 = __pyx_v_j;
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_203, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_204, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6435:                                                 I[i, j] = Io
                        __pyx_t_205 = __pyx_v_i;
                        __pyx_t_206 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_205, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_206, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6436:                                                 Col[i, j, 2] = red
                        __pyx_t_207 = __pyx_v_i;
                        __pyx_t_208 = __pyx_v_j;
                        __pyx_t_209 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_207, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_208, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_209, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6437:                                                 Col[i, j, 1] = green
                        __pyx_t_210 = __pyx_v_i;
                        __pyx_t_211 = __pyx_v_j;
                        __pyx_t_212 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_210, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_211, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_212, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6438:                                                 Col[i, j, 0] = blue
                        __pyx_t_213 = __pyx_v_i;
                        __pyx_t_214 = __pyx_v_j;
                        __pyx_t_215 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_213, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_214, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_215, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6439:                                                 a[k] = 1
                        __pyx_t_216 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_216, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6440:                                                 break
                        goto __pyx_L52_break;
 6441: 
+6442:                 for deli in range(0, -delX - 1, -1):
        __pyx_t_95 = ((-__pyx_v_delX) - 1);
        for (__pyx_t_96 = 0; __pyx_t_96 > __pyx_t_95; __pyx_t_96-=1) {
          __pyx_v_deli = __pyx_t_96;
+6443:                     for delj in range(0, delY + 1):
          __pyx_t_97 = (__pyx_v_delY + 1);
          for (__pyx_t_98 = 0; __pyx_t_98 < __pyx_t_97; __pyx_t_98+=1) {
            __pyx_v_delj = __pyx_t_98;
+6444:                         if ((deli * c - delj * s) / Maj) ** 2 + ((deli * s + delj * c) / Min) ** 2 < 1:
            __pyx_t_23 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_Maj), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_Min), 2.0)) < 1.0) != 0);
            if (__pyx_t_23) {
/* … */
            }
          }
        }
 6445: 
+6446:                             i, j = xo + deli, yo + delj
              __pyx_t_160 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_217 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_160;
              __pyx_v_j = __pyx_t_217;
+6447:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_25 = (0 <= __pyx_v_i);
              if (__pyx_t_25) {
                __pyx_t_25 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_101 = (__pyx_t_25 != 0);
              if (__pyx_t_101) {
              } else {
                __pyx_t_23 = __pyx_t_101;
                goto __pyx_L67_bool_binop_done;
              }
              __pyx_t_101 = (0 <= __pyx_v_j);
              if (__pyx_t_101) {
                __pyx_t_101 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_25 = (__pyx_t_101 != 0);
              __pyx_t_23 = __pyx_t_25;
              __pyx_L67_bool_binop_done:;
              if (__pyx_t_23) {
/* … */
              }
+6448:                                 if I[i, j] == 0:
                __pyx_t_217 = __pyx_v_i;
                __pyx_t_160 = __pyx_v_j;
                __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_217, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_23) {
/* … */
                }
+6449:                                     for dum in range(1):
                  for (__pyx_t_218 = 0; __pyx_t_218 < 1; __pyx_t_218+=1) {
                    __pyx_v_dum = __pyx_t_218;
 6450: 
+6451:                                         if i > 0:
                    __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6452:                                             if  I[i - 1, j] == Io:
                      __pyx_t_219 = (__pyx_v_i - 1);
                      __pyx_t_220 = __pyx_v_j;
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_219, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_220, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6453:                                                 I[i, j] = Io
                        __pyx_t_221 = __pyx_v_i;
                        __pyx_t_222 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_221, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_222, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6454:                                                 Col[i, j, 2] = red
                        __pyx_t_223 = __pyx_v_i;
                        __pyx_t_224 = __pyx_v_j;
                        __pyx_t_225 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_223, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_224, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_225, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6455:                                                 Col[i, j, 1] = green
                        __pyx_t_226 = __pyx_v_i;
                        __pyx_t_227 = __pyx_v_j;
                        __pyx_t_228 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_226, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_227, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_228, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6456:                                                 Col[i, j, 0] = blue
                        __pyx_t_229 = __pyx_v_i;
                        __pyx_t_230 = __pyx_v_j;
                        __pyx_t_231 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_229, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_230, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6457:                                                 a[k] = 1
                        __pyx_t_232 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_232, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6458:                                                 break
                        goto __pyx_L71_break;
+6459:                                         if j > 0:
                    __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6460:                                             if I[i, j - 1] == Io:
                      __pyx_t_233 = __pyx_v_i;
                      __pyx_t_234 = (__pyx_v_j - 1);
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_233, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_234, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6461:                                                 I[i, j] = Io
                        __pyx_t_235 = __pyx_v_i;
                        __pyx_t_236 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_235, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_236, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6462:                                                 Col[i, j, 2] = red
                        __pyx_t_237 = __pyx_v_i;
                        __pyx_t_238 = __pyx_v_j;
                        __pyx_t_239 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_237, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_238, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_239, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6463:                                                 Col[i, j, 1] = green
                        __pyx_t_240 = __pyx_v_i;
                        __pyx_t_241 = __pyx_v_j;
                        __pyx_t_242 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_240, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_241, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_242, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6464:                                                 Col[i, j, 0] = blue
                        __pyx_t_243 = __pyx_v_i;
                        __pyx_t_244 = __pyx_v_j;
                        __pyx_t_245 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_243, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_244, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_245, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6465:                                                 a[k] = 1
                        __pyx_t_246 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_246, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6466:                                                 break
                        goto __pyx_L71_break;
 6467: 
+6468:                                         if j < n - 1:
                    __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6469:                                             if I[i, j + 1] == Io:
                      __pyx_t_247 = __pyx_v_i;
                      __pyx_t_248 = (__pyx_v_j + 1);
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_247, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_248, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6470:                                                 I[i, j] = Io
                        __pyx_t_249 = __pyx_v_i;
                        __pyx_t_250 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_249, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_250, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6471:                                                 Col[i, j, 2] = red
                        __pyx_t_251 = __pyx_v_i;
                        __pyx_t_252 = __pyx_v_j;
                        __pyx_t_253 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_251, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_252, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_253, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6472:                                                 Col[i, j, 1] = green
                        __pyx_t_254 = __pyx_v_i;
                        __pyx_t_255 = __pyx_v_j;
                        __pyx_t_256 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_254, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_255, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_256, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6473:                                                 Col[i, j, 0] = blue
                        __pyx_t_257 = __pyx_v_i;
                        __pyx_t_258 = __pyx_v_j;
                        __pyx_t_259 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_257, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_258, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_259, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6474:                                                 a[k] = 1
                        __pyx_t_260 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_260, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6475:                                                 break
                        goto __pyx_L71_break;
 6476: 
 6477: 
+6478:                                         if i < m - 1:
                    __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L71_break:;
+6479:                                             if  I[i + 1, j] == Io:
                      __pyx_t_261 = (__pyx_v_i + 1);
                      __pyx_t_262 = __pyx_v_j;
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_261, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_262, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6480:                                                 I[i, j] = Io
                        __pyx_t_263 = __pyx_v_i;
                        __pyx_t_264 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_263, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_264, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6481:                                                 Col[i, j, 2] = red
                        __pyx_t_265 = __pyx_v_i;
                        __pyx_t_266 = __pyx_v_j;
                        __pyx_t_267 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_265, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_266, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_267, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6482:                                                 Col[i, j, 1] = green
                        __pyx_t_268 = __pyx_v_i;
                        __pyx_t_269 = __pyx_v_j;
                        __pyx_t_270 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_268, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_269, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_270, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6483:                                                 Col[i, j, 0] = blue
                        __pyx_t_271 = __pyx_v_i;
                        __pyx_t_272 = __pyx_v_j;
                        __pyx_t_273 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_271, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_272, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_273, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6484:                                                 a[k] = 1
                        __pyx_t_274 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_274, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6485:                                                 break
                        goto __pyx_L71_break;
 6486: 
 6487: 
+6488:                             i, j = xo - deli, yo - delj
              __pyx_t_218 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_275 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_218;
              __pyx_v_j = __pyx_t_275;
+6489:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_25 = (0 <= __pyx_v_i);
              if (__pyx_t_25) {
                __pyx_t_25 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_101 = (__pyx_t_25 != 0);
              if (__pyx_t_101) {
              } else {
                __pyx_t_23 = __pyx_t_101;
                goto __pyx_L81_bool_binop_done;
              }
              __pyx_t_101 = (0 <= __pyx_v_j);
              if (__pyx_t_101) {
                __pyx_t_101 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_25 = (__pyx_t_101 != 0);
              __pyx_t_23 = __pyx_t_25;
              __pyx_L81_bool_binop_done:;
              if (__pyx_t_23) {
/* … */
              }
+6490:                                 if I[i, j] == 0:
                __pyx_t_275 = __pyx_v_i;
                __pyx_t_218 = __pyx_v_j;
                __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_275, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_218, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_23) {
/* … */
                }
+6491:                                     for dum in range(1):
                  for (__pyx_t_276 = 0; __pyx_t_276 < 1; __pyx_t_276+=1) {
                    __pyx_v_dum = __pyx_t_276;
 6492: 
+6493:                                         if i > 0:
                    __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6494:                                             if  I[i - 1, j] == Io:
                      __pyx_t_277 = (__pyx_v_i - 1);
                      __pyx_t_278 = __pyx_v_j;
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_277, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_278, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6495:                                                 I[i, j] = Io
                        __pyx_t_279 = __pyx_v_i;
                        __pyx_t_280 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_279, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_280, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6496:                                                 Col[i, j, 2] = red
                        __pyx_t_281 = __pyx_v_i;
                        __pyx_t_282 = __pyx_v_j;
                        __pyx_t_283 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_281, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_282, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_283, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6497:                                                 Col[i, j, 1] = green
                        __pyx_t_284 = __pyx_v_i;
                        __pyx_t_285 = __pyx_v_j;
                        __pyx_t_286 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_285, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_286, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6498:                                                 Col[i, j, 0] = blue
                        __pyx_t_287 = __pyx_v_i;
                        __pyx_t_288 = __pyx_v_j;
                        __pyx_t_289 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_287, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_288, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_289, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6499:                                                 a[k] = 1
                        __pyx_t_290 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_290, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6500:                                                 break
                        goto __pyx_L85_break;
+6501:                                         if j > 0:
                    __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6502:                                             if I[i, j - 1] == Io:
                      __pyx_t_291 = __pyx_v_i;
                      __pyx_t_292 = (__pyx_v_j - 1);
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_291, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_292, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6503:                                                 I[i, j] = Io
                        __pyx_t_293 = __pyx_v_i;
                        __pyx_t_294 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_293, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_294, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6504:                                                 Col[i, j, 2] = red
                        __pyx_t_295 = __pyx_v_i;
                        __pyx_t_296 = __pyx_v_j;
                        __pyx_t_297 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_295, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_296, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_297, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6505:                                                 Col[i, j, 1] = green
                        __pyx_t_298 = __pyx_v_i;
                        __pyx_t_299 = __pyx_v_j;
                        __pyx_t_300 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_298, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_299, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_300, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6506:                                                 Col[i, j, 0] = blue
                        __pyx_t_301 = __pyx_v_i;
                        __pyx_t_302 = __pyx_v_j;
                        __pyx_t_303 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_301, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_302, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_303, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6507:                                                 a[k] = 1
                        __pyx_t_304 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_304, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6508:                                                 break
                        goto __pyx_L85_break;
 6509: 
+6510:                                         if j < n - 1:
                    __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
+6511:                                             if I[i, j + 1] == Io:
                      __pyx_t_305 = __pyx_v_i;
                      __pyx_t_306 = (__pyx_v_j + 1);
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_305, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_306, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6512:                                                 I[i, j] = Io
                        __pyx_t_307 = __pyx_v_i;
                        __pyx_t_308 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_307, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_308, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6513:                                                 Col[i, j, 2] = red
                        __pyx_t_309 = __pyx_v_i;
                        __pyx_t_310 = __pyx_v_j;
                        __pyx_t_311 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_309, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_310, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_311, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6514:                                                 Col[i, j, 1] = green
                        __pyx_t_312 = __pyx_v_i;
                        __pyx_t_313 = __pyx_v_j;
                        __pyx_t_314 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_312, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_313, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_314, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6515:                                                 Col[i, j, 0] = blue
                        __pyx_t_315 = __pyx_v_i;
                        __pyx_t_316 = __pyx_v_j;
                        __pyx_t_317 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_315, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_316, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_317, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6516:                                                 a[k] = 1
                        __pyx_t_318 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_318, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6517:                                                 break
                        goto __pyx_L85_break;
 6518: 
 6519: 
+6520:                                         if i < m - 1:
                    __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                    }
                  }
                  __pyx_L85_break:;
+6521:                                             if  I[i + 1, j] == Io:
                      __pyx_t_319 = (__pyx_v_i + 1);
                      __pyx_t_320 = __pyx_v_j;
                      __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_319, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_320, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_23) {
/* … */
                      }
+6522:                                                 I[i, j] = Io
                        __pyx_t_321 = __pyx_v_i;
                        __pyx_t_322 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_321, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_322, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6523:                                                 Col[i, j, 2] = red
                        __pyx_t_323 = __pyx_v_i;
                        __pyx_t_324 = __pyx_v_j;
                        __pyx_t_325 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_323, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_324, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_325, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6524:                                                 Col[i, j, 1] = green
                        __pyx_t_326 = __pyx_v_i;
                        __pyx_t_327 = __pyx_v_j;
                        __pyx_t_328 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_326, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_327, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_328, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6525:                                                 Col[i, j, 0] = blue
                        __pyx_t_329 = __pyx_v_i;
                        __pyx_t_330 = __pyx_v_j;
                        __pyx_t_331 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_329, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_330, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_331, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6526:                                                 a[k] = 1
                        __pyx_t_332 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_332, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6527:                                                 break
                        goto __pyx_L85_break;
 6528: 
 6529: 
 6530: 
+6531:                 if a[k] == 0:
        __pyx_t_95 = __pyx_v_k;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
        if (__pyx_t_23) {
/* … */
        }
+6532:                     xmin = max(0, xo - delX)
          __pyx_t_96 = (__pyx_v_xo - __pyx_v_delX);
          __pyx_t_333 = 0;
          if (((__pyx_t_96 > __pyx_t_333) != 0)) {
            __pyx_t_97 = __pyx_t_96;
          } else {
            __pyx_t_97 = __pyx_t_333;
          }
          __pyx_v_xmin = __pyx_t_97;
+6533:                     xmax = min(m - 1, xo + delX)
          __pyx_t_97 = (__pyx_v_xo + __pyx_v_delX);
          __pyx_t_96 = (__pyx_v_m - 1);
          if (((__pyx_t_97 < __pyx_t_96) != 0)) {
            __pyx_t_98 = __pyx_t_97;
          } else {
            __pyx_t_98 = __pyx_t_96;
          }
          __pyx_v_xmax = __pyx_t_98;
+6534:                     ymin = max(0, yo - delY)
          __pyx_t_98 = (__pyx_v_yo - __pyx_v_delY);
          __pyx_t_333 = 0;
          if (((__pyx_t_98 > __pyx_t_333) != 0)) {
            __pyx_t_97 = __pyx_t_98;
          } else {
            __pyx_t_97 = __pyx_t_333;
          }
          __pyx_v_ymin = __pyx_t_97;
+6535:                     ymax = min(n - 1, yo + delY)
          __pyx_t_97 = (__pyx_v_yo + __pyx_v_delY);
          __pyx_t_98 = (__pyx_v_n - 1);
          if (((__pyx_t_97 < __pyx_t_98) != 0)) {
            __pyx_t_96 = __pyx_t_97;
          } else {
            __pyx_t_96 = __pyx_t_98;
          }
          __pyx_v_ymax = __pyx_t_96;
+6536:                     a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
          __pyx_t_96 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 6537: 
 6538: 
+6539:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+6540:         for i in range(p):
    __pyx_t_79 = __pyx_v_p;
    for (__pyx_t_80 = 0; __pyx_t_80 < __pyx_t_79; __pyx_t_80+=1) {
      __pyx_v_i = __pyx_t_80;
+6541:             MAJ[i] = MAJ[i] + 1
      __pyx_t_97 = __pyx_v_i;
      __pyx_t_98 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + 1);
    }
+6542:         nnz = cv2.countNonZero(I)
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6542, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6542, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_24 = __Pyx_PyObject_CallOneArg(__pyx_t_8, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6542, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_24);
    } else {
      __pyx_t_34 = PyTuple_New(1+1); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6542, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_34);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_34, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_24 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_34, NULL); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6542, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_24);
      __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_79 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_24); if (unlikely((__pyx_t_79 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6542, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
    __pyx_v_nnz = __pyx_t_79;
  }
 6543: 
+6544:     obj.p = p
  __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_24) < 0) __PYX_ERR(0, 6544, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+6545:     toc = time.time()
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_time); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_34);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_34, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_24 = __Pyx_PyObject_CallOneArg(__pyx_t_34, __pyx_t_8); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6545, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_24 = __Pyx_PyObject_CallNoArg(__pyx_t_34); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6545, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_24); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 6545, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  __pyx_v_toc = __pyx_t_22;
+6546:     obj.exetime = toc - tic
  __pyx_t_24 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_24) < 0) __PYX_ERR(0, 6546, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+6547:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_34, __pyx_n_s_delete); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_arange); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = NULL;
  __pyx_t_26 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_26 = 1;
    }
  }
  __pyx_t_334 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_334)) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_334);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_334, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_334, 0+__pyx_t_26, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_334, 1+__pyx_t_26, __pyx_t_6);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_34 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_334, NULL); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_334); __pyx_t_334 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  __pyx_t_26 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_26 = 1;
    }
  }
  __pyx_t_334 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_334)) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_334);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_334, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_334, 0+__pyx_t_26, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_34);
  PyTuple_SET_ITEM(__pyx_t_334, 1+__pyx_t_26, __pyx_t_34);
  __pyx_t_34 = 0;
  __pyx_t_24 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_334, NULL); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_334); __pyx_t_334 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_24) < 0) __PYX_ERR(0, 6547, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+6548:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_334 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_delete); if (unlikely(!__pyx_t_334)) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_334);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_34, __pyx_n_s_arange); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = NULL;
  __pyx_t_26 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_26 = 1;
    }
  }
  __pyx_t_1 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_34);
  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_26, __pyx_t_34);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_26, __pyx_t_6);
  __pyx_t_34 = 0;
  __pyx_t_6 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  __pyx_t_26 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_334))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_334);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_334);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_334, function);
      __pyx_t_26 = 1;
    }
  }
  __pyx_t_1 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_26, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_26, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_24 = __Pyx_PyObject_Call(__pyx_t_334, __pyx_t_1, NULL); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_334); __pyx_t_334 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_24) < 0) __PYX_ERR(0, 6548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+6549:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 6549, __pyx_L1_error)
+6550:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 6550, __pyx_L1_error)
+6551:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 6552: 
+6553: def Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_49Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_49Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot = {"Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot", (PyCFunction)__pyx_pw_9libEVOLVE_49Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_49Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_48Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_48Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  PyObject *__pyx_v_Rfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_PN;
  PY_LONG_LONG __pyx_v_PE;
  PY_LONG_LONG __pyx_v_PW;
  PY_LONG_LONG __pyx_v_PS;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_MAJceil;
  PY_LONG_LONG __pyx_v_MINceil;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_Min;
  float __pyx_v_Maj;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Rvals = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Rvals;
  __Pyx_Buffer __pyx_pybuffer_Rvals;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot", 0);
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Rvals.pybuffer.buf = NULL;
  __pyx_pybuffer_Rvals.refcount = 0;
  __pyx_pybuffernd_Rvals.data = NULL;
  __pyx_pybuffernd_Rvals.rcbuffer = &__pyx_pybuffer_Rvals;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_24);
  __Pyx_XDECREF(__pyx_t_34);
  __Pyx_XDECREF(__pyx_t_173);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rvals.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rvals.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF(__pyx_v_Rfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Rvals);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__59 = PyTuple_Pack(63, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_Rfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_rad, __pyx_n_s_countim, __pyx_n_s_w, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_MAJceil, __pyx_n_s_MINceil, __pyx_n_s_Iter, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_tmp, __pyx_n_s_Min, __pyx_n_s_Maj, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_MAJ, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Rvals, __pyx_n_s_Col, __pyx_n_s_col, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 6553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_49Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_without_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_7, __pyx_t_2) < 0) __PYX_ERR(0, 6553, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(1, 0, 63, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_7, 6553, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 6553, __pyx_L1_error)
 6554:     # Grabbing data from the input object
+6555:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6555, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+6556:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6556, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+6557:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6557, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+6558:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6558, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+6559:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6559, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+6560:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+6561:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6561, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+6562:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6562, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+6563:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+6564:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+6565:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+6566:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+6567:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
+6568:     Rfunc = obj.Rfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Rfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Rfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 6569: 
 6570:     # Declaring other variables
 6571:     cdef double tic, toc
 6572:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, dp, nnz, rad, countim, w, xt, yt, i, j, k, xo, yo, MAJceil, MINceil, Iter
 6573:     cdef float dt, f, t, tmp, Min, Maj, red, green, blue
+6574:     cdef np.ndarray[np.int64_t, ndim = 1] MAJ = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 6574, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6574, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6574, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+6575:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6575, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6575, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+6576:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6576, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6576, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6576, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6577:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6577, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6577, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6578:     cdef np.ndarray[np.int_t, ndim = 1] a = np.ones(MN, dtype=np.int)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6578, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6578, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6578, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6579:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 6579, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6579, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6579, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+6580:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 6580, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6580, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6580, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+6581:     cdef np.ndarray[np.float64_t, ndim = 1] Rvals = np.ones(MN, dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6581, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6581, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Rvals.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Rvals = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6581, __pyx_L1_error)
    } else {__pyx_pybuffernd_Rvals.diminfo[0].strides = __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Rvals.diminfo[0].shape = __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Rvals = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6582:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6582, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6582, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6583:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6583, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6583, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6583, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6584:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6584, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6584, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6584, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+6585:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6585, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6585, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6585, __pyx_L1_error)
  }
  __pyx_t_18 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_1));
  __pyx_t_1 = 0;
+6586:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6586, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6586, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 6586, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tic = __pyx_t_22;
 6587: 
 6588: 
 6589: 
+6590:     t = 0
  __pyx_v_t = 0.0;
+6591:     p = 0
  __pyx_v_p = 0;
+6592:     dp = 0
  __pyx_v_dp = 0;
+6593:     countim = 0
  __pyx_v_countim = 0;
+6594:     nnz = 0
  __pyx_v_nnz = 0;
+6595:     Iter = 1
  __pyx_v_Iter = 1;
+6596:     if pdelNxy == []:
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6596, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 6596, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_23) {
/* … */
  }
 6597: 
+6598:         while nnz < MN:
    while (1) {
      __pyx_t_23 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
      if (!__pyx_t_23) break;
+6599:             f = nnz / MN
      __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+6600:             dt = 1.0 / Gt(t)
      __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6600, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_Gt);
      __pyx_t_6 = __pyx_v_Gt; __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6600, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_GOTREF(__pyx_t_7);
      } else {
        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6600, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6600, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_7, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6600, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6600, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_v_dt = __pyx_t_3;
+6601:             dp = int((1 - f) * Ndot(t) * dt)
      __pyx_t_6 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6601, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6601, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_v_Ndot);
      __pyx_t_1 = __pyx_v_Ndot; __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6601, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_7);
      } else {
        __pyx_t_24 = PyTuple_New(1+1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6601, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_24);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_24, 0+1, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_24, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6601, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_Multiply(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6601, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6601, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6601, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6601, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_7); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6601, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_v_dp = __pyx_t_2;
+6602:             t = t + dt
      __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+6603:             if pdelNxy == []:
      __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6603, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6603, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_23 < 0)) __PYX_ERR(0, 6603, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_23) {
/* … */
        goto __pyx_L6;
      }
+6604:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_25 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_25) {
        } else {
          __pyx_t_23 = __pyx_t_25;
          goto __pyx_L8_bool_binop_done;
        }
        __pyx_t_25 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_25) {
        } else {
          __pyx_t_23 = __pyx_t_25;
          goto __pyx_L8_bool_binop_done;
        }
        __pyx_t_25 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_23 = __pyx_t_25;
        __pyx_L8_bool_binop_done:;
        if (__pyx_t_23) {
/* … */
        }
+6605:                     count = 0
          __pyx_v_count = 0;
+6606:                     while count < dp:
          while (1) {
            __pyx_t_23 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_23) break;
+6607:                         xt = np.random.randint(0, m - 1)
            __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6607, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6607, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_randint); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6607, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6607, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_24 = NULL;
            __pyx_t_26 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
              __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_7);
              if (likely(__pyx_t_24)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_24);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_7, function);
                __pyx_t_26 = 1;
              }
            }
            __pyx_t_8 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6607, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            if (__pyx_t_24) {
              __Pyx_GIVEREF(__pyx_t_24); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_24); __pyx_t_24 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_26, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_26, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6607, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6607, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_2;
+6608:                         yt = np.random.randint(0, n - 1)
            __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6608, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6608, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_randint); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6608, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6608, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_1 = NULL;
            __pyx_t_26 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_7, function);
                __pyx_t_26 = 1;
              }
            }
            __pyx_t_24 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6608, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_24);
            if (__pyx_t_1) {
              __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_1); __pyx_t_1 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_24, 0+__pyx_t_26, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_24, 1+__pyx_t_26, __pyx_t_8);
            __pyx_t_8 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_24, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6608, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6608, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_2;
+6609:                         if I[xt, yt] == 0:
            __pyx_t_2 = __pyx_v_xt;
            __pyx_t_27 = __pyx_v_yt;
            __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_27, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_23) {
/* … */
            }
          }
+6610:                             I[xt, yt] = p + count + 1
              __pyx_t_28 = __pyx_v_xt;
              __pyx_t_29 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_28, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_29, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+6611:                             X[p + count] = xt
              __pyx_t_30 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+6612:                             Y[p + count] = yt
              __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+6613:                             a[p + count] = 1
              __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6614:                             MAJ[p + count] = 1
              __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1;
+6615:                             Rvals[p + count] = Rfunc(xt, yt, p + count + 1, 1, 0)
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6615, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6615, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_24);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6615, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_1 = __pyx_v_Rfunc; __pyx_t_5 = NULL;
              __pyx_t_26 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_5)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_5);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_26 = 1;
                }
              }
              __pyx_t_34 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6615, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_34);
              if (__pyx_t_5) {
                __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_5); __pyx_t_5 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_34, 0+__pyx_t_26, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_24);
              PyTuple_SET_ITEM(__pyx_t_34, 1+__pyx_t_26, __pyx_t_24);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_34, 2+__pyx_t_26, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_34, 3+__pyx_t_26, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_34, 4+__pyx_t_26, __pyx_int_0);
              __pyx_t_7 = 0;
              __pyx_t_24 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_34, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6615, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 6615, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_36 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_Rvals.diminfo[0].strides) = __pyx_t_35;
+6616:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_37 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_38 = 0;
              __pyx_t_39 = __pyx_v_xt;
              __pyx_t_40 = __pyx_v_yt;
              __pyx_t_41 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_38, __pyx_pybuffernd_col.diminfo[1].strides));
+6617:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_42 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_43 = 1;
              __pyx_t_44 = __pyx_v_xt;
              __pyx_t_45 = __pyx_v_yt;
              __pyx_t_46 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_col.diminfo[1].strides));
+6618:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_47 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_48 = 2;
              __pyx_t_49 = __pyx_v_xt;
              __pyx_t_50 = __pyx_v_yt;
              __pyx_t_51 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_col.diminfo[1].strides));
+6619:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+6620:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 6621:             else:
+6622:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
      /*else*/ {
        __pyx_t_25 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_25) {
        } else {
          __pyx_t_23 = __pyx_t_25;
          goto __pyx_L15_bool_binop_done;
        }
        __pyx_t_25 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_25) {
        } else {
          __pyx_t_23 = __pyx_t_25;
          goto __pyx_L15_bool_binop_done;
        }
        __pyx_t_25 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_23 = __pyx_t_25;
        __pyx_L15_bool_binop_done:;
        if (__pyx_t_23) {
/* … */
        }
      }
      __pyx_L6:;
+6623:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6623, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6623, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_34);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6623, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6623, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6623, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_24);
          __pyx_t_7 = NULL;
          __pyx_t_26 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_34);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_34, function);
              __pyx_t_26 = 1;
            }
          }
          __pyx_t_5 = PyTuple_New(7+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6623, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          if (__pyx_t_7) {
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_26, __pyx_t_1);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_26, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_26, __pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_24);
          PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_26, __pyx_t_24);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_26, __pyx_int_1);
          __pyx_t_1 = 0;
          __pyx_t_8 = 0;
          __pyx_t_24 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6623, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 6623, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_34 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_34 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_34);
            __Pyx_INCREF(__pyx_t_5);
            #else
            __pyx_t_34 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6623, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6623, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_24 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6623, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_24);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_52 = Py_TYPE(__pyx_t_24)->tp_iternext;
            index = 0; __pyx_t_34 = __pyx_t_52(__pyx_t_24); if (unlikely(!__pyx_t_34)) goto __pyx_L18_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_34);
            index = 1; __pyx_t_5 = __pyx_t_52(__pyx_t_24); if (unlikely(!__pyx_t_5)) goto __pyx_L18_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_5);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_52(__pyx_t_24), 2) < 0) __PYX_ERR(0, 6623, __pyx_L1_error)
            __pyx_t_52 = NULL;
            __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
            goto __pyx_L19_unpacking_done;
            __pyx_L18_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
            __pyx_t_52 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 6623, __pyx_L1_error)
            __pyx_L19_unpacking_done:;
          }
          if (!(likely(((__pyx_t_34) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_34, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6623, __pyx_L1_error)
          if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6623, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_34);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6623, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_34));
          __pyx_t_34 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6623, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_5));
          __pyx_t_5 = 0;
+6624:                     w = 0
          __pyx_v_w = 0;
+6625:                     count = 0
          __pyx_v_count = 0;
+6626:                     while count < dp:
          while (1) {
            __pyx_t_23 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_23) break;
+6627:                         xt = xtrial[w]
            __pyx_t_53 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+6628:                         yt = ytrial[w]
            __pyx_t_54 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+6629:                         if I[xt, yt] == 0:
            __pyx_t_55 = __pyx_v_xt;
            __pyx_t_56 = __pyx_v_yt;
            __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_55, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_56, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_23) {
/* … */
            }
+6630:                             I[xt, yt] = p + count + 1
              __pyx_t_57 = __pyx_v_xt;
              __pyx_t_58 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_58, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+6631:                             X[p + count] = xt
              __pyx_t_59 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+6632:                             Y[p + count] = yt
              __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+6633:                             a[p + count] = 1
              __pyx_t_61 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6634:                             MAJ[p + count] = 1
              __pyx_t_62 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1;
+6635:                             Rvals[p + count] = Rfunc(xt, yt, p + count + 1, 1, 0)
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6635, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6635, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_34);
              __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6635, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_24);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_8 = __pyx_v_Rfunc; __pyx_t_1 = NULL;
              __pyx_t_26 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_26 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(5+__pyx_t_26); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6635, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_1) {
                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_26, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_34);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_26, __pyx_t_34);
              __Pyx_GIVEREF(__pyx_t_24);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_26, __pyx_t_24);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_26, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_26, __pyx_int_0);
              __pyx_t_5 = 0;
              __pyx_t_34 = 0;
              __pyx_t_24 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6635, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_35 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_35 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 6635, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_63 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_Rvals.diminfo[0].strides) = __pyx_t_35;
+6636:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_64 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_65 = 0;
              __pyx_t_66 = __pyx_v_xt;
              __pyx_t_67 = __pyx_v_yt;
              __pyx_t_68 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_67, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_68, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_65, __pyx_pybuffernd_col.diminfo[1].strides));
+6637:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_69 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_70 = 1;
              __pyx_t_71 = __pyx_v_xt;
              __pyx_t_72 = __pyx_v_yt;
              __pyx_t_73 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_73, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_70, __pyx_pybuffernd_col.diminfo[1].strides));
+6638:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_74 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_75 = 2;
              __pyx_t_76 = __pyx_v_xt;
              __pyx_t_77 = __pyx_v_yt;
              __pyx_t_78 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_col.diminfo[1].strides));
+6639:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+6640:                         if w < dp - 1:
            __pyx_t_23 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_23) {
/* … */
              goto __pyx_L23;
            }
+6641:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 6642:                         else:
+6643:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6643, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6643, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6643, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6643, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_24);
              __pyx_t_34 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6643, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_34);
              __pyx_t_5 = NULL;
              __pyx_t_26 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
                if (likely(__pyx_t_5)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                  __Pyx_INCREF(__pyx_t_5);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_7, function);
                  __pyx_t_26 = 1;
                }
              }
              __pyx_t_1 = PyTuple_New(7+__pyx_t_26); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6643, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__pyx_t_5) {
                __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_26, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_26, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_26, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_26, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_24);
              PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_26, __pyx_t_24);
              __Pyx_GIVEREF(__pyx_t_34);
              PyTuple_SET_ITEM(__pyx_t_1, 5+__pyx_t_26, __pyx_t_34);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_1, 6+__pyx_t_26, __pyx_int_1);
              __pyx_t_8 = 0;
              __pyx_t_24 = 0;
              __pyx_t_34 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6643, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 6643, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_1);
                #else
                __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6643, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_7);
                __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6643, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_1);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_34 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6643, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_34);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_52 = Py_TYPE(__pyx_t_34)->tp_iternext;
                index = 0; __pyx_t_7 = __pyx_t_52(__pyx_t_34); if (unlikely(!__pyx_t_7)) goto __pyx_L24_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_7);
                index = 1; __pyx_t_1 = __pyx_t_52(__pyx_t_34); if (unlikely(!__pyx_t_1)) goto __pyx_L24_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_1);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_52(__pyx_t_34), 2) < 0) __PYX_ERR(0, 6643, __pyx_L1_error)
                __pyx_t_52 = NULL;
                __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
                goto __pyx_L25_unpacking_done;
                __pyx_L24_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
                __pyx_t_52 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 6643, __pyx_L1_error)
                __pyx_L25_unpacking_done:;
              }
              if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6643, __pyx_L1_error)
              if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6643, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6643, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_7));
              __pyx_t_7 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6643, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_1));
              __pyx_t_1 = 0;
+6644:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L23:;
          }
+6645:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 6646: 
 6647: 
+6648:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+6649:             countim = countim + 1
      __pyx_v_countim = (__pyx_v_countim + 1);
 6650: 
+6651:             for k in range(0, p):
      __pyx_t_79 = __pyx_v_p;
      for (__pyx_t_80 = 0; __pyx_t_80 < __pyx_t_79; __pyx_t_80+=1) {
        __pyx_v_k = __pyx_t_80;
+6652:                 if a[k] == 1:
        __pyx_t_81 = __pyx_v_k;
        __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_23) {
/* … */
        }
      }
+6653:                     a[k] = 0
          __pyx_t_82 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+6654:                     xo = X[k]
          __pyx_t_83 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_X.diminfo[0].strides));
+6655:                     yo = Y[k]
          __pyx_t_84 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_Y.diminfo[0].strides));
+6656:                     Io = I[xo, yo]
          __pyx_t_85 = __pyx_v_xo;
          __pyx_t_86 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides));
+6657:                     Maj = MAJ[k]
          __pyx_t_87 = __pyx_v_k;
          __pyx_v_Maj = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_MAJ.diminfo[0].strides));
+6658:                     Min = Maj / Rvals[k]
          __pyx_t_88 = __pyx_v_k;
          __pyx_v_Min = (((__pyx_t_5numpy_float64_t)__pyx_v_Maj) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_Rvals.diminfo[0].strides)));
+6659:                     MAJceil = math.ceil(Maj)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6659, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6659, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = PyFloat_FromDouble(__pyx_v_Maj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6659, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_34 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_34)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_34);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_34) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6659, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_6);
          } else {
            __pyx_t_24 = PyTuple_New(1+1); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6659, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_24);
            __Pyx_GIVEREF(__pyx_t_34); PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_34); __pyx_t_34 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_24, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_24, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6659, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_89 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_89 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6659, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_MAJceil = __pyx_t_89;
+6660:                     MINceil = math.ceil(Min)
          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6660, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ceil); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6660, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_24);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = PyFloat_FromDouble(__pyx_v_Min); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6660, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_24))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_24);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_24);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_24, function);
            }
          }
          if (!__pyx_t_1) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_24, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6660, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_GOTREF(__pyx_t_6);
          } else {
            __pyx_t_34 = PyTuple_New(1+1); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6660, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_34);
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_34, 0, __pyx_t_1); __pyx_t_1 = NULL;
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_34, 0+1, __pyx_t_7);
            __pyx_t_7 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_24, __pyx_t_34, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6660, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
          }
          __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
          __pyx_t_89 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_89 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6660, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_MINceil = __pyx_t_89;
+6661:                     red = col[k, 0]
          __pyx_t_89 = __pyx_v_k;
          __pyx_t_90 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_90, __pyx_pybuffernd_col.diminfo[1].strides));
+6662:                     green = col[k, 1]
          __pyx_t_91 = __pyx_v_k;
          __pyx_t_92 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_92, __pyx_pybuffernd_col.diminfo[1].strides));
+6663:                     blue = col[k, 2]
          __pyx_t_93 = __pyx_v_k;
          __pyx_t_94 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_col.diminfo[1].strides));
 6664: 
+6665:                     for deli in range(MAJceil + 1):
          __pyx_t_95 = (__pyx_v_MAJceil + 1);
          for (__pyx_t_96 = 0; __pyx_t_96 < __pyx_t_95; __pyx_t_96+=1) {
            __pyx_v_deli = __pyx_t_96;
+6666:                         for delj in range(MINceil + 1):
            __pyx_t_97 = (__pyx_v_MINceil + 1);
            for (__pyx_t_98 = 0; __pyx_t_98 < __pyx_t_97; __pyx_t_98+=1) {
              __pyx_v_delj = __pyx_t_98;
+6667:                             if (deli / Maj) ** 2 + (delj / Min) ** 2 < 1:
              __pyx_t_23 = (((powf((((float)__pyx_v_deli) / __pyx_v_Maj), 2.0) + powf((((float)__pyx_v_delj) / __pyx_v_Min), 2.0)) < 1.0) != 0);
              if (__pyx_t_23) {
/* … */
              }
            }
          }
+6668:                                 i, j = xo + deli, yo + delj
                __pyx_t_99 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_100 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_99;
                __pyx_v_j = __pyx_t_100;
+6669:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_25 = (0 <= __pyx_v_i);
                if (__pyx_t_25) {
                  __pyx_t_25 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_101 = (__pyx_t_25 != 0);
                if (__pyx_t_101) {
                } else {
                  __pyx_t_23 = __pyx_t_101;
                  goto __pyx_L35_bool_binop_done;
                }
                __pyx_t_101 = (0 <= __pyx_v_j);
                if (__pyx_t_101) {
                  __pyx_t_101 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_25 = (__pyx_t_101 != 0);
                __pyx_t_23 = __pyx_t_25;
                __pyx_L35_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+6670:                                     if I[i, j] == 0:
                  __pyx_t_100 = __pyx_v_i;
                  __pyx_t_99 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_100, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+6671:                                         if i > 0:
                    __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                      goto __pyx_L38;
                    }
+6672:                                             PN = I[i - 1, j]
                      __pyx_t_102 = (__pyx_v_i - 1);
                      __pyx_t_103 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_103, __pyx_pybuffernd_I.diminfo[1].strides));
 6673:                                         else:
+6674:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L38:;
+6675:                                         if j > 0:
                    __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                      goto __pyx_L39;
                    }
+6676:                                             PW = I[i, j - 1]
                      __pyx_t_104 = __pyx_v_i;
                      __pyx_t_105 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_105, __pyx_pybuffernd_I.diminfo[1].strides));
 6677:                                         else:
+6678:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L39:;
+6679:                                         if PN == Io or PW == Io:
                    __pyx_t_25 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_25) {
                    } else {
                      __pyx_t_23 = __pyx_t_25;
                      goto __pyx_L41_bool_binop_done;
                    }
                    __pyx_t_25 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    __pyx_t_23 = __pyx_t_25;
                    __pyx_L41_bool_binop_done:;
                    if (__pyx_t_23) {
/* … */
                    }
+6680:                                             I[i, j] = Io
                      __pyx_t_106 = __pyx_v_i;
                      __pyx_t_107 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6681:                                             Col[i, j, 2] = red
                      __pyx_t_108 = __pyx_v_i;
                      __pyx_t_109 = __pyx_v_j;
                      __pyx_t_110 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6682:                                             Col[i, j, 1] = green
                      __pyx_t_111 = __pyx_v_i;
                      __pyx_t_112 = __pyx_v_j;
                      __pyx_t_113 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_113, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6683:                                             Col[i, j, 0] = blue
                      __pyx_t_114 = __pyx_v_i;
                      __pyx_t_115 = __pyx_v_j;
                      __pyx_t_116 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_115, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6684:                                             a[k] = 1
                      __pyx_t_117 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 6685: 
+6686:                                 i, j = xo - deli, yo + delj
                __pyx_t_118 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_119 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_118;
                __pyx_v_j = __pyx_t_119;
+6687:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_25 = (0 <= __pyx_v_i);
                if (__pyx_t_25) {
                  __pyx_t_25 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_101 = (__pyx_t_25 != 0);
                if (__pyx_t_101) {
                } else {
                  __pyx_t_23 = __pyx_t_101;
                  goto __pyx_L44_bool_binop_done;
                }
                __pyx_t_101 = (0 <= __pyx_v_j);
                if (__pyx_t_101) {
                  __pyx_t_101 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_25 = (__pyx_t_101 != 0);
                __pyx_t_23 = __pyx_t_25;
                __pyx_L44_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+6688:                                     if I[i, j] == 0:
                  __pyx_t_119 = __pyx_v_i;
                  __pyx_t_118 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_118, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+6689:                                         if i < m - 1:
                    __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                      goto __pyx_L47;
                    }
+6690:                                             PS = I[i + 1, j]
                      __pyx_t_120 = (__pyx_v_i + 1);
                      __pyx_t_121 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_121, __pyx_pybuffernd_I.diminfo[1].strides));
 6691:                                         else:
+6692:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L47:;
+6693:                                         if j > 0:
                    __pyx_t_23 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                      goto __pyx_L48;
                    }
+6694:                                             PW = I[i, j - 1]
                      __pyx_t_122 = __pyx_v_i;
                      __pyx_t_123 = (__pyx_v_j - 1);
                      __pyx_v_PW = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_123, __pyx_pybuffernd_I.diminfo[1].strides));
 6695:                                         else:
+6696:                                             PW = 0
                    /*else*/ {
                      __pyx_v_PW = 0;
                    }
                    __pyx_L48:;
+6697:                                         if PW == Io or PS == Io:
                    __pyx_t_25 = ((__pyx_v_PW == __pyx_v_Io) != 0);
                    if (!__pyx_t_25) {
                    } else {
                      __pyx_t_23 = __pyx_t_25;
                      goto __pyx_L50_bool_binop_done;
                    }
                    __pyx_t_25 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_23 = __pyx_t_25;
                    __pyx_L50_bool_binop_done:;
                    if (__pyx_t_23) {
/* … */
                    }
+6698:                                             I[i, j] = Io
                      __pyx_t_124 = __pyx_v_i;
                      __pyx_t_125 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6699:                                             Col[i, j, 2] = red
                      __pyx_t_126 = __pyx_v_i;
                      __pyx_t_127 = __pyx_v_j;
                      __pyx_t_128 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6700:                                             Col[i, j, 1] = green
                      __pyx_t_129 = __pyx_v_i;
                      __pyx_t_130 = __pyx_v_j;
                      __pyx_t_131 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6701:                                             Col[i, j, 0] = blue
                      __pyx_t_132 = __pyx_v_i;
                      __pyx_t_133 = __pyx_v_j;
                      __pyx_t_134 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_134, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6702:                                             a[k] = 1
                      __pyx_t_135 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 6703: 
+6704:                                 i, j = xo - deli, yo - delj
                __pyx_t_136 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_137 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_136;
                __pyx_v_j = __pyx_t_137;
+6705:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_25 = (0 <= __pyx_v_i);
                if (__pyx_t_25) {
                  __pyx_t_25 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_101 = (__pyx_t_25 != 0);
                if (__pyx_t_101) {
                } else {
                  __pyx_t_23 = __pyx_t_101;
                  goto __pyx_L53_bool_binop_done;
                }
                __pyx_t_101 = (0 <= __pyx_v_j);
                if (__pyx_t_101) {
                  __pyx_t_101 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_25 = (__pyx_t_101 != 0);
                __pyx_t_23 = __pyx_t_25;
                __pyx_L53_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+6706:                                     if I[i, j] == 0:
                  __pyx_t_137 = __pyx_v_i;
                  __pyx_t_136 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+6707:                                         if i < m - 1:
                    __pyx_t_23 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                      goto __pyx_L56;
                    }
+6708:                                             PS = I[i + 1, j]
                      __pyx_t_138 = (__pyx_v_i + 1);
                      __pyx_t_139 = __pyx_v_j;
                      __pyx_v_PS = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_138, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_139, __pyx_pybuffernd_I.diminfo[1].strides));
 6709:                                         else:
+6710:                                             PS = 0
                    /*else*/ {
                      __pyx_v_PS = 0;
                    }
                    __pyx_L56:;
+6711:                                         if j < n - 1:
                    __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                      goto __pyx_L57;
                    }
+6712:                                             PE = I[i, j + 1]
                      __pyx_t_140 = __pyx_v_i;
                      __pyx_t_141 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_I.diminfo[1].strides));
 6713:                                         else:
+6714:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L57:;
+6715:                                         if PE == Io or PS == Io:
                    __pyx_t_25 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    if (!__pyx_t_25) {
                    } else {
                      __pyx_t_23 = __pyx_t_25;
                      goto __pyx_L59_bool_binop_done;
                    }
                    __pyx_t_25 = ((__pyx_v_PS == __pyx_v_Io) != 0);
                    __pyx_t_23 = __pyx_t_25;
                    __pyx_L59_bool_binop_done:;
                    if (__pyx_t_23) {
/* … */
                    }
+6716:                                             I[i, j] = Io
                      __pyx_t_142 = __pyx_v_i;
                      __pyx_t_143 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_143, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6717:                                             Col[i, j, 2] = red
                      __pyx_t_144 = __pyx_v_i;
                      __pyx_t_145 = __pyx_v_j;
                      __pyx_t_146 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6718:                                             Col[i, j, 1] = green
                      __pyx_t_147 = __pyx_v_i;
                      __pyx_t_148 = __pyx_v_j;
                      __pyx_t_149 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_148, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_149, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6719:                                             Col[i, j, 0] = blue
                      __pyx_t_150 = __pyx_v_i;
                      __pyx_t_151 = __pyx_v_j;
                      __pyx_t_152 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_151, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_152, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6720:                                             a[k] = 1
                      __pyx_t_153 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 6721: 
+6722:                                 i, j = xo + deli, yo - delj
                __pyx_t_154 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_155 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_154;
                __pyx_v_j = __pyx_t_155;
+6723:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_25 = (0 <= __pyx_v_i);
                if (__pyx_t_25) {
                  __pyx_t_25 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_101 = (__pyx_t_25 != 0);
                if (__pyx_t_101) {
                } else {
                  __pyx_t_23 = __pyx_t_101;
                  goto __pyx_L62_bool_binop_done;
                }
                __pyx_t_101 = (0 <= __pyx_v_j);
                if (__pyx_t_101) {
                  __pyx_t_101 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_25 = (__pyx_t_101 != 0);
                __pyx_t_23 = __pyx_t_25;
                __pyx_L62_bool_binop_done:;
                if (__pyx_t_23) {
/* … */
                }
+6724:                                     if I[i, j] == 0:
                  __pyx_t_155 = __pyx_v_i;
                  __pyx_t_154 = __pyx_v_j;
                  __pyx_t_23 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_154, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_23) {
/* … */
                  }
+6725:                                         if i > 0:
                    __pyx_t_23 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_23) {
/* … */
                      goto __pyx_L65;
                    }
+6726:                                             PN = I[i - 1, j]
                      __pyx_t_156 = (__pyx_v_i - 1);
                      __pyx_t_157 = __pyx_v_j;
                      __pyx_v_PN = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_157, __pyx_pybuffernd_I.diminfo[1].strides));
 6727:                                         else:
+6728:                                             PN = 0
                    /*else*/ {
                      __pyx_v_PN = 0;
                    }
                    __pyx_L65:;
+6729:                                         if j < n - 1:
                    __pyx_t_23 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_23) {
/* … */
                      goto __pyx_L66;
                    }
+6730:                                             PE = I[i, j + 1]
                      __pyx_t_158 = __pyx_v_i;
                      __pyx_t_159 = (__pyx_v_j + 1);
                      __pyx_v_PE = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_158, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_159, __pyx_pybuffernd_I.diminfo[1].strides));
 6731:                                         else:
+6732:                                             PE = 0
                    /*else*/ {
                      __pyx_v_PE = 0;
                    }
                    __pyx_L66:;
+6733:                                         if PN == Io or PE == Io:
                    __pyx_t_25 = ((__pyx_v_PN == __pyx_v_Io) != 0);
                    if (!__pyx_t_25) {
                    } else {
                      __pyx_t_23 = __pyx_t_25;
                      goto __pyx_L68_bool_binop_done;
                    }
                    __pyx_t_25 = ((__pyx_v_PE == __pyx_v_Io) != 0);
                    __pyx_t_23 = __pyx_t_25;
                    __pyx_L68_bool_binop_done:;
                    if (__pyx_t_23) {
/* … */
                    }
+6734:                                             I[i, j] = Io
                      __pyx_t_160 = __pyx_v_i;
                      __pyx_t_161 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_161, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6735:                                             Col[i, j, 2] = red
                      __pyx_t_162 = __pyx_v_i;
                      __pyx_t_163 = __pyx_v_j;
                      __pyx_t_164 = 2;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6736:                                             Col[i, j, 1] = green
                      __pyx_t_165 = __pyx_v_i;
                      __pyx_t_166 = __pyx_v_j;
                      __pyx_t_167 = 1;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_167, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6737:                                             Col[i, j, 0] = blue
                      __pyx_t_168 = __pyx_v_i;
                      __pyx_t_169 = __pyx_v_j;
                      __pyx_t_170 = 0;
                      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_170, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6738:                                             a[k] = 1
                      __pyx_t_171 = __pyx_v_k;
                      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
 6739: 
+6740:                     if a[k] == 0:
          __pyx_t_95 = __pyx_v_k;
          __pyx_t_23 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_23) {
/* … */
          }
+6741:                         xmin = max(0, xo - MAJceil)
            __pyx_t_96 = (__pyx_v_xo - __pyx_v_MAJceil);
            __pyx_t_172 = 0;
            if (((__pyx_t_96 > __pyx_t_172) != 0)) {
              __pyx_t_97 = __pyx_t_96;
            } else {
              __pyx_t_97 = __pyx_t_172;
            }
            __pyx_v_xmin = __pyx_t_97;
+6742:                         xmax = min(m - 1, xo + MAJceil)
            __pyx_t_97 = (__pyx_v_xo + __pyx_v_MAJceil);
            __pyx_t_96 = (__pyx_v_m - 1);
            if (((__pyx_t_97 < __pyx_t_96) != 0)) {
              __pyx_t_98 = __pyx_t_97;
            } else {
              __pyx_t_98 = __pyx_t_96;
            }
            __pyx_v_xmax = __pyx_t_98;
+6743:                         ymin = max(0, yo - MINceil)
            __pyx_t_98 = (__pyx_v_yo - __pyx_v_MINceil);
            __pyx_t_172 = 0;
            if (((__pyx_t_98 > __pyx_t_172) != 0)) {
              __pyx_t_97 = __pyx_t_98;
            } else {
              __pyx_t_97 = __pyx_t_172;
            }
            __pyx_v_ymin = __pyx_t_97;
+6744:                         ymax = min(n - 1, yo + MINceil)
            __pyx_t_97 = (__pyx_v_yo + __pyx_v_MINceil);
            __pyx_t_98 = (__pyx_v_n - 1);
            if (((__pyx_t_97 < __pyx_t_98) != 0)) {
              __pyx_t_96 = __pyx_t_97;
            } else {
              __pyx_t_96 = __pyx_t_98;
            }
            __pyx_v_ymax = __pyx_t_96;
+6745:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_96 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 6746: 
 6747: 
+6748:             showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+6749:             for i in range(p):
      __pyx_t_79 = __pyx_v_p;
      for (__pyx_t_80 = 0; __pyx_t_80 < __pyx_t_79; __pyx_t_80+=1) {
        __pyx_v_i = __pyx_t_80;
+6750:                 MAJ[i] = MAJ[i] + 1
        __pyx_t_97 = __pyx_v_i;
        __pyx_t_98 = __pyx_v_i;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + 1);
      }
+6751:             nnz = cv2.countNonZero(I)
      __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6751, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_24);
      __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_24, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6751, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_34);
      __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
      __pyx_t_24 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
        __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_34);
        if (likely(__pyx_t_24)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
          __Pyx_INCREF(__pyx_t_24);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_34, function);
        }
      }
      if (!__pyx_t_24) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_34, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6751, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6751, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_24); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_24); __pyx_t_24 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_I));
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6751, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
      __pyx_t_79 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_79 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6751, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_v_nnz = __pyx_t_79;
    }
 6752: 
+6753:     obj.p = p
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_6) < 0) __PYX_ERR(0, 6753, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+6754:     toc = time.time()
  __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_34, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_34 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_34 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_34)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_34);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_34) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_34); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6754, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  } else {
    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6754, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_22 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_22 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 6754, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_toc = __pyx_t_22;
+6755:     obj.exetime = toc - tic
  __pyx_t_6 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_6) < 0) __PYX_ERR(0, 6755, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+6756:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_34 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_delete); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_24 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_24, __pyx_n_s_arange); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
  __pyx_t_24 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_24);
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = NULL;
  __pyx_t_26 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_26 = 1;
    }
  }
  __pyx_t_173 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_173)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_173);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_173, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_24);
  PyTuple_SET_ITEM(__pyx_t_173, 0+__pyx_t_26, __pyx_t_24);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_173, 1+__pyx_t_26, __pyx_t_8);
  __pyx_t_24 = 0;
  __pyx_t_8 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_173, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_173); __pyx_t_173 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_26 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_34))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_34);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_34);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_34, function);
      __pyx_t_26 = 1;
    }
  }
  __pyx_t_173 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_173)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_173);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_173, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_173, 0+__pyx_t_26, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_173, 1+__pyx_t_26, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_34, __pyx_t_173, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_173); __pyx_t_173 = 0;
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_6) < 0) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+6757:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_34 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __pyx_t_173 = __Pyx_PyObject_GetAttrStr(__pyx_t_34, __pyx_n_s_delete); if (unlikely(!__pyx_t_173)) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_173);
  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_arange); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_24 = NULL;
  __pyx_t_26 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_24)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_24);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_26 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_24) {
    __Pyx_GIVEREF(__pyx_t_24); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_24); __pyx_t_24 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, __pyx_t_8);
  __pyx_t_7 = 0;
  __pyx_t_8 = 0;
  __pyx_t_34 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_34);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_26 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_173))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_173);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_173);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_173, function);
      __pyx_t_26 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_26); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_26, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_34);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_26, __pyx_t_34);
  __pyx_t_34 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_173, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_173); __pyx_t_173 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_6) < 0) __PYX_ERR(0, 6757, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+6758:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 6758, __pyx_L1_error)
+6759:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 6759, __pyx_L1_error)
+6760:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 6761: 
 6762: 
 6763: 
+6764: def Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_51Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_51Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot = {"Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot", (PyCFunction)__pyx_pw_9libEVOLVE_51Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_51Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_50Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_50Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_R;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PY_LONG_LONG __pyx_v_MN;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Adotfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  PY_LONG_LONG __pyx_v_imin;
  PY_LONG_LONG __pyx_v_imax;
  PY_LONG_LONG __pyx_v_jmin;
  PY_LONG_LONG __pyx_v_jmax;
  PY_LONG_LONG __pyx_v_io;
  PY_LONG_LONG __pyx_v_jo;
  PY_LONG_LONG __pyx_v_go;
  PY_LONG_LONG __pyx_v_found;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_l1;
  PY_LONG_LONG __pyx_v_l2;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_MAJceil;
  PY_LONG_LONG __pyx_v_MINceil;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_adotValmax;
  float __pyx_v_tmp;
  float __pyx_v_MIN;
  float __pyx_v_dr;
  float __pyx_v_t;
  float __pyx_v_dt;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_adotVal = 0;
  PyArrayObject *__pyx_v_II = 0;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  PyObject *__pyx_v_f = NULL;
  PyObject *__pyx_v_w = NULL;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_II;
  __Pyx_Buffer __pyx_pybuffer_II;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_adotVal;
  __Pyx_Buffer __pyx_pybuffer_adotVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_adotVal.pybuffer.buf = NULL;
  __pyx_pybuffer_adotVal.refcount = 0;
  __pyx_pybuffernd_adotVal.data = NULL;
  __pyx_pybuffernd_adotVal.rcbuffer = &__pyx_pybuffer_adotVal;
  __pyx_pybuffer_II.pybuffer.buf = NULL;
  __pyx_pybuffer_II.refcount = 0;
  __pyx_pybuffernd_II.data = NULL;
  __pyx_pybuffernd_II.rcbuffer = &__pyx_pybuffer_II;
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_35);
  __Pyx_XDECREF(__pyx_t_585);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Adotfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_adotVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_II);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XDECREF(__pyx_v_w);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__61 = PyTuple_Pack(80, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_R, __pyx_n_s_fstop, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_MN, __pyx_n_s_fd, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_pdelNxy, __pyx_n_s_Adotfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_imin, __pyx_n_s_imax, __pyx_n_s_jmin, __pyx_n_s_jmax, __pyx_n_s_io, __pyx_n_s_jo, __pyx_n_s_go, __pyx_n_s_found, __pyx_n_s_dum, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_count, __pyx_n_s_l1, __pyx_n_s_l2, __pyx_n_s_countim, __pyx_n_s_MAJceil, __pyx_n_s_MINceil, __pyx_n_s_nnz, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_dp, __pyx_n_s_p, __pyx_n_s_Iter, __pyx_n_s_adotValmax, __pyx_n_s_tmp, __pyx_n_s_MIN, __pyx_n_s_dr, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_t, __pyx_n_s_dt, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_adotVal, __pyx_n_s_II, __pyx_n_s_MAJ, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_Col, __pyx_n_s_col, __pyx_n_s_f, __pyx_n_s_w); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 6764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__61);
  __Pyx_GIVEREF(__pyx_tuple__61);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_51Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_without_theta_with_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_8, __pyx_t_2) < 0) __PYX_ERR(0, 6764, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(1, 0, 80, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_8, 6764, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 6764, __pyx_L1_error)
 6765:     # Grabbing data from the input object
+6766:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6766, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+6767:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6767, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6767, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+6768:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6768, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+6769:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6769, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+6770:     cdef float R = obj.R
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_R); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6770, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_R = __pyx_t_3;
+6771:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6771, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+6772:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6772, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+6773:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6773, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+6774:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+6775:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+6776:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+6777:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+6778:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6778, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+6779:     Adotfunc = obj.Adotfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Adotfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Adotfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 6780: 
 6781: 
 6782:     # Declaring other variables
 6783:     cdef double tic, toc
 6784:     cdef long long deli, delj, PN, PE, PW, PS, Io, win, xmin, xmax, ymin, ymax, imin, imax, jmin, jmax, io, jo, go, found, dum, i, j, k, xo, yo, count, l1, l2, countim, MAJceil, MINceil, nnz, xt, yt, dp, p, Iter
 6785:     cdef float adotValmax, tmp, MIN, dr, theta, c, s, t, dt, red, green, blue
+6786:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6786, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6786, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+6787:     cdef np.ndarray[np.int_t, ndim = 1] a = np.ones(MN, dtype=np.int)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6787, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6787, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6788:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6788, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6788, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6788, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6789:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 6789, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6789, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6789, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+6790:     cdef np.ndarray[np.float64_t, ndim = 1] adotVal = np.zeros(MN, dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6790, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_adotVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6790, __pyx_L1_error)
    } else {__pyx_pybuffernd_adotVal.diminfo[0].strides = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_adotVal.diminfo[0].shape = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_adotVal = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+6791:     cdef np.ndarray[np.int_t, ndim = 2] II = np.zeros((m, n), dtype=np.int)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6791, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_II.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_II = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_II.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6791, __pyx_L1_error)
    } else {__pyx_pybuffernd_II.diminfo[0].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_II.diminfo[0].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_II.diminfo[1].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_II.diminfo[1].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_II = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6792:     cdef np.ndarray[np.float64_t, ndim = 1] MAJ = np.zeros(MN, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 6792, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6792, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6792, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+6793:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 6793, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6793, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6793, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+6794:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6794, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6794, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6794, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6794, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6795:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6795, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6795, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+6796:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 6796, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6796, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 6796, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_19 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+6797:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6797, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+6798:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6798, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6798, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6798, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6798, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6798, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6798, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6798, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6798, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6798, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6798, __pyx_L1_error)
  }
  __pyx_t_19 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_5));
  __pyx_t_5 = 0;
+6799:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6799, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6799, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 6799, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_tic = __pyx_t_23;
 6800: 
 6801: 
+6802:     countim = 1
  __pyx_v_countim = 1;
+6803:     count = 0
  __pyx_v_count = 0;
+6804:     nnz = 0
  __pyx_v_nnz = 0;
+6805:     t = 0
  __pyx_v_t = 0.0;
+6806:     p = 0
  __pyx_v_p = 0;
+6807:     Iter = 1
  __pyx_v_Iter = 1;
+6808:     while nnz < MN:
  while (1) {
    __pyx_t_24 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_24) break;
+6809:         f = nnz / MN
    __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_nnz / __pyx_v_MN)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6809, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_5);
    __pyx_t_5 = 0;
+6810:         dt = 1.0 / Gt(t)
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6810, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_6 = __pyx_v_Gt; __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6810, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6810, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6810, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_5, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6810, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6810, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_dt = __pyx_t_3;
+6811:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_6 = __Pyx_PyInt_SubtractCObj(__pyx_int_1, __pyx_v_f, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6811, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6811, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_8 = __pyx_v_Ndot; __pyx_t_1 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6811, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6811, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6811, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6811, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6811, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6811, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_dp = __pyx_t_2;
+6812:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+6813:         if pdelNxy == []:
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6813, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6813, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_24 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_24 < 0)) __PYX_ERR(0, 6813, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_24) {
/* … */
      goto __pyx_L5;
    }
+6814:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
      __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_24 = __pyx_t_26;
      __pyx_L7_bool_binop_done:;
      if (__pyx_t_24) {
/* … */
      }
+6815:                 count = 0
        __pyx_v_count = 0;
+6816:                 while count < dp:
        while (1) {
          __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_24) break;
+6817:                     xt = np.random.randint(0, m - 1)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6817, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6817, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6817, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6817, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_25 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_25)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_25);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_7 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6817, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (__pyx_t_25) {
            __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_25); __pyx_t_25 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_27, __pyx_t_8);
          __pyx_t_8 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6817, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6817, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_xt = __pyx_t_2;
+6818:                     yt = np.random.randint(0, n - 1)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6818, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6818, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6818, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6818, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_8 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6818, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_8); __pyx_t_8 = NULL;
          }
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_7);
          __pyx_t_7 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_25, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6818, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6818, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_yt = __pyx_t_2;
+6819:                     if I[xt, yt] == 0:
          __pyx_t_2 = __pyx_v_xt;
          __pyx_t_28 = __pyx_v_yt;
          __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_24) {
/* … */
          }
        }
+6820:                         I[xt, yt] = p + count + 1
            __pyx_t_29 = __pyx_v_xt;
            __pyx_t_30 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+6821:                         X[p + count] = xt
            __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+6822:                         Y[p + count] = yt
            __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+6823:                         a[p + count] = 1
            __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6824:                         MAJ[p + count] = 1
            __pyx_t_34 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+6825:                         adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, 1)
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6825, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6825, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6825, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_v_Adotfunc);
            __pyx_t_8 = __pyx_v_Adotfunc; __pyx_t_1 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_8, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_35 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 6825, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_35);
            if (__pyx_t_1) {
              __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_1); __pyx_t_1 = NULL;
            }
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_35, 0+__pyx_t_27, __pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_35, 1+__pyx_t_27, __pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_35, 2+__pyx_t_27, __pyx_t_7);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_35, 3+__pyx_t_27, __pyx_int_0);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_35, 4+__pyx_t_27, __pyx_int_1);
            __pyx_t_5 = 0;
            __pyx_t_25 = 0;
            __pyx_t_7 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_35, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6825, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 6825, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_37 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_36;
+6826:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_38 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_39 = 0;
            __pyx_t_40 = __pyx_v_xt;
            __pyx_t_41 = __pyx_v_yt;
            __pyx_t_42 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_42, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_39, __pyx_pybuffernd_col.diminfo[1].strides));
+6827:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_43 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_44 = 1;
            __pyx_t_45 = __pyx_v_xt;
            __pyx_t_46 = __pyx_v_yt;
            __pyx_t_47 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_47, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_col.diminfo[1].strides));
+6828:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_48 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_49 = 2;
            __pyx_t_50 = __pyx_v_xt;
            __pyx_t_51 = __pyx_v_yt;
            __pyx_t_52 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_52, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_49, __pyx_pybuffernd_col.diminfo[1].strides));
+6829:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+6830:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 6831:         else:
+6832:             if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
    /*else*/ {
      __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
      if (__pyx_t_26) {
      } else {
        __pyx_t_24 = __pyx_t_26;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
      __pyx_t_24 = __pyx_t_26;
      __pyx_L14_bool_binop_done:;
      if (__pyx_t_24) {
/* … */
      }
    }
    __pyx_L5:;
+6833:                 xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6833, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 6833, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_35);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6833, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6833, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6833, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __pyx_t_5 = NULL;
        __pyx_t_27 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_35))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_35);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_35);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_35, function);
            __pyx_t_27 = 1;
          }
        }
        __pyx_t_1 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6833, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_INCREF(__pyx_v_pdelNxy);
        __Pyx_GIVEREF(__pyx_v_pdelNxy);
        PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_27, __pyx_v_pdelNxy);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_27, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_27, __pyx_t_8);
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_27, __pyx_int_0);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_27, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_25);
        PyTuple_SET_ITEM(__pyx_t_1, 5+__pyx_t_27, __pyx_t_25);
        __Pyx_INCREF(__pyx_int_1);
        __Pyx_GIVEREF(__pyx_int_1);
        PyTuple_SET_ITEM(__pyx_t_1, 6+__pyx_t_27, __pyx_int_1);
        __pyx_t_8 = 0;
        __pyx_t_7 = 0;
        __pyx_t_25 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6833, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
          PyObject* sequence = __pyx_t_6;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 6833, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_35 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_35 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_35);
          __Pyx_INCREF(__pyx_t_1);
          #else
          __pyx_t_35 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 6833, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_35);
          __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6833, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          #endif
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_25 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6833, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_53 = Py_TYPE(__pyx_t_25)->tp_iternext;
          index = 0; __pyx_t_35 = __pyx_t_53(__pyx_t_25); if (unlikely(!__pyx_t_35)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_35);
          index = 1; __pyx_t_1 = __pyx_t_53(__pyx_t_25); if (unlikely(!__pyx_t_1)) goto __pyx_L17_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_1);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_53(__pyx_t_25), 2) < 0) __PYX_ERR(0, 6833, __pyx_L1_error)
          __pyx_t_53 = NULL;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          goto __pyx_L18_unpacking_done;
          __pyx_L17_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_53 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 6833, __pyx_L1_error)
          __pyx_L18_unpacking_done:;
        }
        if (!(likely(((__pyx_t_35) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_35, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6833, __pyx_L1_error)
        if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6833, __pyx_L1_error)
        __pyx_t_16 = ((PyArrayObject *)__pyx_t_35);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
            }
          }
          __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6833, __pyx_L1_error)
        }
        __pyx_t_16 = 0;
        __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_35));
        __pyx_t_35 = 0;
        __pyx_t_17 = ((PyArrayObject *)__pyx_t_1);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
          __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_4 < 0)) {
            PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            }
          }
          __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6833, __pyx_L1_error)
        }
        __pyx_t_17 = 0;
        __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_1));
        __pyx_t_1 = 0;
+6834:                 w = 0
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_XDECREF_SET(__pyx_v_w, __pyx_int_0);
+6835:                 count = 0
        __pyx_v_count = 0;
+6836:                 while count < dp:
        while (1) {
          __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
          if (!__pyx_t_24) break;
+6837:                     xt = xtrial[w]
          __pyx_t_6 = PyObject_GetItem(((PyObject *)__pyx_v_xtrial), __pyx_v_w); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6837, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_54 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_54 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6837, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_xt = __pyx_t_54;
+6838:                     yt = ytrial[w]
          __pyx_t_6 = PyObject_GetItem(((PyObject *)__pyx_v_ytrial), __pyx_v_w); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6838, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_54 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_54 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6838, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_yt = __pyx_t_54;
+6839:                     if I[xt, yt] == 0:
          __pyx_t_54 = __pyx_v_xt;
          __pyx_t_55 = __pyx_v_yt;
          __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
          if (__pyx_t_24) {
/* … */
          }
+6840:                         I[xt, yt] = p + count + 1
            __pyx_t_56 = __pyx_v_xt;
            __pyx_t_57 = __pyx_v_yt;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_57, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+6841:                         X[p + count] = xt
            __pyx_t_58 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+6842:                         Y[p + count] = yt
            __pyx_t_59 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+6843:                         a[p + count] = 1
            __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6844:                         MAJ[p + count] = 1
            __pyx_t_61 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+6845:                         adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, 1)
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6845, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_35 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 6845, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_35);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6845, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_INCREF(__pyx_v_Adotfunc);
            __pyx_t_7 = __pyx_v_Adotfunc; __pyx_t_8 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
              __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
              if (likely(__pyx_t_8)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_8);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_7, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_5 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6845, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_8) {
              __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
            }
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_35);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_35);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_27, __pyx_t_25);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_27, __pyx_int_0);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_27, __pyx_int_1);
            __pyx_t_1 = 0;
            __pyx_t_35 = 0;
            __pyx_t_25 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6845, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 6845, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_62 = (__pyx_v_p + __pyx_v_count);
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_36;
+6846:                         Col[xt, yt, 2] = col[p + count, 0]
            __pyx_t_63 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_64 = 0;
            __pyx_t_65 = __pyx_v_xt;
            __pyx_t_66 = __pyx_v_yt;
            __pyx_t_67 = 2;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_66, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_67, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_64, __pyx_pybuffernd_col.diminfo[1].strides));
+6847:                         Col[xt, yt, 1] = col[p + count, 1]
            __pyx_t_68 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_69 = 1;
            __pyx_t_70 = __pyx_v_xt;
            __pyx_t_71 = __pyx_v_yt;
            __pyx_t_72 = 1;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_69, __pyx_pybuffernd_col.diminfo[1].strides));
+6848:                         Col[xt, yt, 0] = col[p + count, 2]
            __pyx_t_73 = (__pyx_v_p + __pyx_v_count);
            __pyx_t_74 = 2;
            __pyx_t_75 = __pyx_v_xt;
            __pyx_t_76 = __pyx_v_yt;
            __pyx_t_77 = 0;
            *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_col.diminfo[1].strides));
+6849:                         count = count + 1
            __pyx_v_count = (__pyx_v_count + 1);
+6850:                     if w < dp - 1:
          __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_dp - 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6850, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = PyObject_RichCompare(__pyx_v_w, __pyx_t_6, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6850, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_24 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_24 < 0)) __PYX_ERR(0, 6850, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (__pyx_t_24) {
/* … */
            goto __pyx_L22;
          }
+6851:                         w = w + 1
            __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_v_w, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6851, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF_SET(__pyx_v_w, __pyx_t_7);
            __pyx_t_7 = 0;
 6852:                     else:
+6853:                         xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          /*else*/ {
            __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6853, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6853, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6853, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6853, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            __pyx_t_35 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 6853, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_35);
            __pyx_t_1 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_8 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6853, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            if (__pyx_t_1) {
              __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
            }
            __Pyx_INCREF(__pyx_v_pdelNxy);
            __Pyx_GIVEREF(__pyx_v_pdelNxy);
            PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_27, __pyx_v_pdelNxy);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_27, __pyx_t_6);
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_25);
            PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_27, __pyx_t_25);
            __Pyx_GIVEREF(__pyx_t_35);
            PyTuple_SET_ITEM(__pyx_t_8, 5+__pyx_t_27, __pyx_t_35);
            __Pyx_INCREF(__pyx_int_1);
            __Pyx_GIVEREF(__pyx_int_1);
            PyTuple_SET_ITEM(__pyx_t_8, 6+__pyx_t_27, __pyx_int_1);
            __pyx_t_6 = 0;
            __pyx_t_25 = 0;
            __pyx_t_35 = 0;
            __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6853, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
              PyObject* sequence = __pyx_t_7;
              #if CYTHON_COMPILING_IN_CPYTHON
              Py_ssize_t size = Py_SIZE(sequence);
              #else
              Py_ssize_t size = PySequence_Size(sequence);
              #endif
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(0, 6853, __pyx_L1_error)
              }
              #if CYTHON_COMPILING_IN_CPYTHON
              if (likely(PyTuple_CheckExact(sequence))) {
                __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
                __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
              } else {
                __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
                __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
              }
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_8);
              #else
              __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6853, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6853, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              #endif
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            } else {
              Py_ssize_t index = -1;
              __pyx_t_35 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 6853, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __pyx_t_53 = Py_TYPE(__pyx_t_35)->tp_iternext;
              index = 0; __pyx_t_5 = __pyx_t_53(__pyx_t_35); if (unlikely(!__pyx_t_5)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_5);
              index = 1; __pyx_t_8 = __pyx_t_53(__pyx_t_35); if (unlikely(!__pyx_t_8)) goto __pyx_L23_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_8);
              if (__Pyx_IternextUnpackEndCheck(__pyx_t_53(__pyx_t_35), 2) < 0) __PYX_ERR(0, 6853, __pyx_L1_error)
              __pyx_t_53 = NULL;
              __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
              goto __pyx_L24_unpacking_done;
              __pyx_L23_unpacking_failed:;
              __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
              __pyx_t_53 = NULL;
              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
              __PYX_ERR(0, 6853, __pyx_L1_error)
              __pyx_L24_unpacking_done:;
            }
            if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6853, __pyx_L1_error)
            if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 6853, __pyx_L1_error)
            __pyx_t_16 = ((PyArrayObject *)__pyx_t_5);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
                }
              }
              __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6853, __pyx_L1_error)
            }
            __pyx_t_16 = 0;
            __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_5));
            __pyx_t_5 = 0;
            __pyx_t_17 = ((PyArrayObject *)__pyx_t_8);
            {
              __Pyx_BufFmt_StackElem __pyx_stack[1];
              __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
              __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
              if (unlikely(__pyx_t_4 < 0)) {
                PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
                if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                  Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                  __Pyx_RaiseBufferFallbackError();
                } else {
                  PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                }
              }
              __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
              if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6853, __pyx_L1_error)
            }
            __pyx_t_17 = 0;
            __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_8));
            __pyx_t_8 = 0;
+6854:                         w = 0
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_DECREF_SET(__pyx_v_w, __pyx_int_0);
          }
          __pyx_L22:;
        }
+6855:                 p = p + dp
        __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 6856: 
 6857: 
+6858:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+6859:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 6860: 
+6861:         adotValmax = 0
    __pyx_v_adotValmax = 0.0;
+6862:         for i in range(0, p):
    __pyx_t_78 = __pyx_v_p;
    for (__pyx_t_79 = 0; __pyx_t_79 < __pyx_t_78; __pyx_t_79+=1) {
      __pyx_v_i = __pyx_t_79;
+6863:             if a[i] == 1:
      __pyx_t_80 = __pyx_v_i;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+6864:                 tmp = adotVal[i]
        __pyx_t_81 = __pyx_v_i;
        __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_81, __pyx_pybuffernd_adotVal.diminfo[0].strides));
+6865:                 if tmp > adotValmax:
        __pyx_t_24 = ((__pyx_v_tmp > __pyx_v_adotValmax) != 0);
        if (__pyx_t_24) {
/* … */
        }
+6866:                     adotValmax = tmp
          __pyx_v_adotValmax = __pyx_v_tmp;
 6867: 
+6868:         for k in range(0, p):
    __pyx_t_78 = __pyx_v_p;
    for (__pyx_t_79 = 0; __pyx_t_79 < __pyx_t_78; __pyx_t_79+=1) {
      __pyx_v_k = __pyx_t_79;
+6869:             if a[k] == 1:
      __pyx_t_82 = __pyx_v_k;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+6870:                 a[k] = 0
        __pyx_t_83 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+6871:                 xo = X[k]
        __pyx_t_84 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_X.diminfo[0].strides));
+6872:                 yo = Y[k]
        __pyx_t_85 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_Y.diminfo[0].strides));
+6873:                 Io = I[xo, yo]
        __pyx_t_86 = __pyx_v_xo;
        __pyx_t_87 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_87, __pyx_pybuffernd_I.diminfo[1].strides));
 6874: 
+6875:                 dr = adotVal[k] / adotValmax
        __pyx_t_88 = __pyx_v_k;
        __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_adotVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_adotValmax));
+6876:                 MAJ[k] = MAJ[k] + dr
        __pyx_t_89 = __pyx_v_k;
        __pyx_t_90 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + __pyx_v_dr);
+6877:                 MIN = MAJ[k] / R
        __pyx_t_91 = __pyx_v_k;
        __pyx_v_MIN = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_MAJ.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_R));
+6878:                 MAJceil = math.ceil(MAJ[k])
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6878, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ceil); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6878, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_92 = __pyx_v_k;
        __pyx_t_8 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_MAJ.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6878, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_35 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_35 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_35)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_35);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (!__pyx_t_35) {
          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6878, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_GOTREF(__pyx_t_7);
        } else {
          __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6878, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __Pyx_GIVEREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_35); __pyx_t_35 = NULL;
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_8);
          __pyx_t_8 = 0;
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6878, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_93 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_7); if (unlikely((__pyx_t_93 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6878, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_v_MAJceil = __pyx_t_93;
+6879:                 MINceil = math.ceil(MIN)
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6879, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ceil); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6879, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_25);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = PyFloat_FromDouble(__pyx_v_MIN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6879, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_25);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_25, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_25, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6879, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_7);
        } else {
          __pyx_t_35 = PyTuple_New(1+1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 6879, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_35);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_35, 0+1, __pyx_t_5);
          __pyx_t_5 = 0;
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_35, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6879, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        }
        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
        __pyx_t_93 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_7); if (unlikely((__pyx_t_93 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 6879, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_v_MINceil = __pyx_t_93;
+6880:                 red = col[k, 0]
        __pyx_t_93 = __pyx_v_k;
        __pyx_t_94 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_94, __pyx_pybuffernd_col.diminfo[1].strides));
+6881:                 green = col[k, 1]
        __pyx_t_95 = __pyx_v_k;
        __pyx_t_96 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_96, __pyx_pybuffernd_col.diminfo[1].strides));
+6882:                 blue = col[k, 2]
        __pyx_t_97 = __pyx_v_k;
        __pyx_t_98 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_98, __pyx_pybuffernd_col.diminfo[1].strides));
 6883: 
+6884:                 imin, imax, jmin, jmax = xo, xo, yo, yo
        __pyx_t_99 = __pyx_v_xo;
        __pyx_t_100 = __pyx_v_xo;
        __pyx_t_101 = __pyx_v_yo;
        __pyx_t_102 = __pyx_v_yo;
        __pyx_v_imin = __pyx_t_99;
        __pyx_v_imax = __pyx_t_100;
        __pyx_v_jmin = __pyx_t_101;
        __pyx_v_jmax = __pyx_t_102;
 6885: 
+6886:                 for deli in range(0, MAJceil + 1):
        __pyx_t_102 = (__pyx_v_MAJceil + 1);
        for (__pyx_t_101 = 0; __pyx_t_101 < __pyx_t_102; __pyx_t_101+=1) {
          __pyx_v_deli = __pyx_t_101;
+6887:                     for delj in range(0, MINceil + 1):
          __pyx_t_100 = (__pyx_v_MINceil + 1);
          for (__pyx_t_99 = 0; __pyx_t_99 < __pyx_t_100; __pyx_t_99+=1) {
            __pyx_v_delj = __pyx_t_99;
+6888:                         if (deli / MAJ[k]) ** 2 + (delj / MIN) ** 2 <= 1:
            __pyx_t_103 = __pyx_v_k;
            __pyx_t_24 = (((pow((((__pyx_t_5numpy_float64_t)__pyx_v_deli) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((float)__pyx_v_delj) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
        }
+6889:                             for l1 in range(-1, 2, 2):
              for (__pyx_t_104 = -1L; __pyx_t_104 < 2; __pyx_t_104+=2) {
                __pyx_v_l1 = __pyx_t_104;
+6890:                                 for l2 in range(-1, 2, 2):
                for (__pyx_t_105 = -1L; __pyx_t_105 < 2; __pyx_t_105+=2) {
                  __pyx_v_l2 = __pyx_t_105;
+6891:                                     i, j = xo + l1 * deli, yo + l2 * delj
                  __pyx_t_106 = (__pyx_v_xo + (__pyx_v_l1 * __pyx_v_deli));
                  __pyx_t_107 = (__pyx_v_yo + (__pyx_v_l2 * __pyx_v_delj));
                  __pyx_v_i = __pyx_t_106;
                  __pyx_v_j = __pyx_t_107;
+6892:                                     if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                  __pyx_t_26 = (0 <= __pyx_v_i);
                  if (__pyx_t_26) {
                    __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
                  }
                  __pyx_t_108 = (__pyx_t_26 != 0);
                  if (__pyx_t_108) {
                  } else {
                    __pyx_t_24 = __pyx_t_108;
                    goto __pyx_L42_bool_binop_done;
                  }
                  __pyx_t_108 = (0 <= __pyx_v_j);
                  if (__pyx_t_108) {
                    __pyx_t_108 = (__pyx_v_j <= (__pyx_v_n - 1));
                  }
                  __pyx_t_26 = (__pyx_t_108 != 0);
                  __pyx_t_24 = __pyx_t_26;
                  __pyx_L42_bool_binop_done:;
                  if (__pyx_t_24) {
/* … */
                  }
                }
              }
+6893:                                         if I[i, j] == 0:
                    __pyx_t_107 = __pyx_v_i;
                    __pyx_t_106 = __pyx_v_j;
                    __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_106, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+6894:                                             II[i, j] = Io
                      __pyx_t_109 = __pyx_v_i;
                      __pyx_t_110 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_II.diminfo[1].strides) = __pyx_v_Io;
+6895:                                             count = count + 1
                      __pyx_v_count = (__pyx_v_count + 1);
+6896:                                             if i > imax:
                      __pyx_t_24 = ((__pyx_v_i > __pyx_v_imax) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+6897:                                                 imax = i
                        __pyx_v_imax = __pyx_v_i;
+6898:                                             if i < imin:
                      __pyx_t_24 = ((__pyx_v_i < __pyx_v_imin) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+6899:                                                 imin = i
                        __pyx_v_imin = __pyx_v_i;
+6900:                                             if j > jmax:
                      __pyx_t_24 = ((__pyx_v_j > __pyx_v_jmax) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+6901:                                                 jmax = j
                        __pyx_v_jmax = __pyx_v_j;
+6902:                                             if j < jmin:
                      __pyx_t_24 = ((__pyx_v_j < __pyx_v_jmin) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+6903:                                                 jmin = j
                        __pyx_v_jmin = __pyx_v_j;
 6904: 
+6905:                 if count > 0:
        __pyx_t_24 = ((__pyx_v_count > 0) != 0);
        if (__pyx_t_24) {
/* … */
        }
+6906:                     i = imin
          __pyx_v_i = __pyx_v_imin;
+6907:                     go = 1
          __pyx_v_go = 1;
+6908:                     found = 0
          __pyx_v_found = 0;
+6909:                     while go is True:
          while (1) {
            __pyx_t_24 = ((__pyx_v_go == 1) != 0);
            if (!__pyx_t_24) break;
+6910:                         for j in range(jmin, jmax + 1, 1):
            __pyx_t_102 = (__pyx_v_jmax + 1);
            for (__pyx_t_101 = __pyx_v_jmin; __pyx_t_101 < __pyx_t_102; __pyx_t_101+=1) {
              __pyx_v_j = __pyx_t_101;
+6911:                             if II[i, j] == Io:
              __pyx_t_100 = __pyx_v_i;
              __pyx_t_99 = __pyx_v_j;
              __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_100, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
              if (__pyx_t_24) {
/* … */
              }
            }
            __pyx_L53_break:;
+6912:                                 if i > 0:
                __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+6913:                                     if  I[i - 1, j] == Io:
                  __pyx_t_104 = (__pyx_v_i - 1);
                  __pyx_t_105 = __pyx_v_j;
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_105, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
+6914:                                         io, jo = i, j
                    __pyx_t_111 = __pyx_v_i;
                    __pyx_t_112 = __pyx_v_j;
                    __pyx_v_io = __pyx_t_111;
                    __pyx_v_jo = __pyx_t_112;
+6915:                                         go = 0
                    __pyx_v_go = 0;
+6916:                                         found = 1
                    __pyx_v_found = 1;
+6917:                                         break
                    goto __pyx_L53_break;
+6918:                                 if j > 0:
                __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+6919:                                     if I[i, j - 1] == Io:
                  __pyx_t_112 = __pyx_v_i;
                  __pyx_t_111 = (__pyx_v_j - 1);
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_111, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
+6920:                                         io, jo = i, j
                    __pyx_t_113 = __pyx_v_i;
                    __pyx_t_114 = __pyx_v_j;
                    __pyx_v_io = __pyx_t_113;
                    __pyx_v_jo = __pyx_t_114;
+6921:                                         go = 0
                    __pyx_v_go = 0;
+6922:                                         found = 1
                    __pyx_v_found = 1;
+6923:                                         break
                    goto __pyx_L53_break;
 6924: 
+6925:                                 if j < n - 1:
                __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                if (__pyx_t_24) {
/* … */
                }
+6926:                                     if I[i, j + 1] == Io:
                  __pyx_t_114 = __pyx_v_i;
                  __pyx_t_113 = (__pyx_v_j + 1);
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
+6927:                                         io, jo = i, j
                    __pyx_t_115 = __pyx_v_i;
                    __pyx_t_116 = __pyx_v_j;
                    __pyx_v_io = __pyx_t_115;
                    __pyx_v_jo = __pyx_t_116;
+6928:                                         go = 0
                    __pyx_v_go = 0;
+6929:                                         found = 1
                    __pyx_v_found = 1;
+6930:                                         break
                    goto __pyx_L53_break;
 6931: 
 6932: 
+6933:                                 if i < m - 1:
                __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                if (__pyx_t_24) {
/* … */
                }
+6934:                                     if  I[i + 1, j] == Io:
                  __pyx_t_116 = (__pyx_v_i + 1);
                  __pyx_t_115 = __pyx_v_j;
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_116, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_115, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
+6935:                                         io, jo = i, j
                    __pyx_t_117 = __pyx_v_i;
                    __pyx_t_118 = __pyx_v_j;
                    __pyx_v_io = __pyx_t_117;
                    __pyx_v_jo = __pyx_t_118;
+6936:                                         go = 0
                    __pyx_v_go = 0;
+6937:                                         found = 1
                    __pyx_v_found = 1;
+6938:                                         break
                    goto __pyx_L53_break;
+6939:                         i = i + 1
            __pyx_v_i = (__pyx_v_i + 1);
+6940:                         if i == imax + 1:
            __pyx_t_24 = ((__pyx_v_i == (__pyx_v_imax + 1)) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
+6941:                             go = 0
              __pyx_v_go = 0;
 6942: 
+6943:                     if found == 1:
          __pyx_t_24 = ((__pyx_v_found == 1) != 0);
          if (__pyx_t_24) {
/* … */
          }
 6944: 
 6945:                         # OUTWARD
+6946:                         for i in range(io, imax + 1):
            __pyx_t_102 = (__pyx_v_imax + 1);
            for (__pyx_t_101 = __pyx_v_io; __pyx_t_101 < __pyx_t_102; __pyx_t_101+=1) {
              __pyx_v_i = __pyx_t_101;
+6947:                             for j in range(jo, jmax + 1):
              __pyx_t_118 = (__pyx_v_jmax + 1);
              for (__pyx_t_117 = __pyx_v_jo; __pyx_t_117 < __pyx_t_118; __pyx_t_117+=1) {
                __pyx_v_j = __pyx_t_117;
+6948:                                 for dum in range(1):
                for (__pyx_t_119 = 0; __pyx_t_119 < 1; __pyx_t_119+=1) {
                  __pyx_v_dum = __pyx_t_119;
+6949:                                     if II[i, j] == Io:
                  __pyx_t_120 = __pyx_v_i;
                  __pyx_t_121 = __pyx_v_j;
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_121, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
                }
                __pyx_L70_break:;
              }
+6950:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+6951:                                             if  I[i - 1, j] == Io:
                      __pyx_t_122 = (__pyx_v_i - 1);
                      __pyx_t_123 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_123, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+6952:                                                 I[i, j] = Io
                        __pyx_t_124 = __pyx_v_i;
                        __pyx_t_125 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6953:                                                 Col[i, j, 2] = red
                        __pyx_t_126 = __pyx_v_i;
                        __pyx_t_127 = __pyx_v_j;
                        __pyx_t_128 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6954:                                                 Col[i, j, 1] = green
                        __pyx_t_129 = __pyx_v_i;
                        __pyx_t_130 = __pyx_v_j;
                        __pyx_t_131 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6955:                                                 Col[i, j, 0] = blue
                        __pyx_t_132 = __pyx_v_i;
                        __pyx_t_133 = __pyx_v_j;
                        __pyx_t_134 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_134, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6956:                                                 a[k] = 1
                        __pyx_t_135 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6957:                                                 break
                        goto __pyx_L70_break;
+6958:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+6959:                                             if I[i, j - 1] == Io:
                      __pyx_t_136 = __pyx_v_i;
                      __pyx_t_137 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_136, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_137, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+6960:                                                 I[i, j] = Io
                        __pyx_t_138 = __pyx_v_i;
                        __pyx_t_139 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_138, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_139, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6961:                                                 Col[i, j, 2] = red
                        __pyx_t_140 = __pyx_v_i;
                        __pyx_t_141 = __pyx_v_j;
                        __pyx_t_142 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6962:                                                 Col[i, j, 1] = green
                        __pyx_t_143 = __pyx_v_i;
                        __pyx_t_144 = __pyx_v_j;
                        __pyx_t_145 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6963:                                                 Col[i, j, 0] = blue
                        __pyx_t_146 = __pyx_v_i;
                        __pyx_t_147 = __pyx_v_j;
                        __pyx_t_148 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_148, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6964:                                                 a[k] = 1
                        __pyx_t_149 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6965:                                                 break
                        goto __pyx_L70_break;
 6966: 
+6967:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+6968:                                             if I[i, j + 1] == Io:
                      __pyx_t_150 = __pyx_v_i;
                      __pyx_t_151 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_151, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+6969:                                                 I[i, j] = Io
                        __pyx_t_152 = __pyx_v_i;
                        __pyx_t_153 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_152, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_153, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6970:                                                 Col[i, j, 2] = red
                        __pyx_t_154 = __pyx_v_i;
                        __pyx_t_155 = __pyx_v_j;
                        __pyx_t_156 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_155, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_156, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6971:                                                 Col[i, j, 1] = green
                        __pyx_t_157 = __pyx_v_i;
                        __pyx_t_158 = __pyx_v_j;
                        __pyx_t_159 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6972:                                                 Col[i, j, 0] = blue
                        __pyx_t_160 = __pyx_v_i;
                        __pyx_t_161 = __pyx_v_j;
                        __pyx_t_162 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_161, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_162, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6973:                                                 a[k] = 1
                        __pyx_t_163 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6974:                                                 break
                        goto __pyx_L70_break;
 6975: 
 6976: 
+6977:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+6978:                                             if  I[i + 1, j] == Io:
                      __pyx_t_164 = (__pyx_v_i + 1);
                      __pyx_t_165 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_164, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_165, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+6979:                                                 I[i, j] = Io
                        __pyx_t_166 = __pyx_v_i;
                        __pyx_t_167 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_166, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_167, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6980:                                                 Col[i, j, 2] = red
                        __pyx_t_168 = __pyx_v_i;
                        __pyx_t_169 = __pyx_v_j;
                        __pyx_t_170 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_170, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6981:                                                 Col[i, j, 1] = green
                        __pyx_t_171 = __pyx_v_i;
                        __pyx_t_172 = __pyx_v_j;
                        __pyx_t_173 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_172, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_173, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6982:                                                 Col[i, j, 0] = blue
                        __pyx_t_174 = __pyx_v_i;
                        __pyx_t_175 = __pyx_v_j;
                        __pyx_t_176 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_174, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_175, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_176, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6983:                                                 a[k] = 1
                        __pyx_t_177 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6984:                                                 break
                        goto __pyx_L70_break;
 6985: 
+6986:                             for j in range(jo - 1, jmin - 1, -1):
              __pyx_t_118 = (__pyx_v_jmin - 1);
              for (__pyx_t_117 = (__pyx_v_jo - 1); __pyx_t_117 > __pyx_t_118; __pyx_t_117-=1) {
                __pyx_v_j = __pyx_t_117;
+6987:                                 for dum in range(1):
                for (__pyx_t_119 = 0; __pyx_t_119 < 1; __pyx_t_119+=1) {
                  __pyx_v_dum = __pyx_t_119;
+6988:                                     if II[i, j] == Io:
                  __pyx_t_178 = __pyx_v_i;
                  __pyx_t_179 = __pyx_v_j;
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_178, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_179, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
                }
                __pyx_L83_break:;
              }
            }
+6989:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+6990:                                             if  I[i - 1, j] == Io:
                      __pyx_t_180 = (__pyx_v_i - 1);
                      __pyx_t_181 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_180, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_181, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+6991:                                                 I[i, j] = Io
                        __pyx_t_182 = __pyx_v_i;
                        __pyx_t_183 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_183, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+6992:                                                 Col[i, j, 2] = red
                        __pyx_t_184 = __pyx_v_i;
                        __pyx_t_185 = __pyx_v_j;
                        __pyx_t_186 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+6993:                                                 Col[i, j, 1] = green
                        __pyx_t_187 = __pyx_v_i;
                        __pyx_t_188 = __pyx_v_j;
                        __pyx_t_189 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+6994:                                                 Col[i, j, 0] = blue
                        __pyx_t_190 = __pyx_v_i;
                        __pyx_t_191 = __pyx_v_j;
                        __pyx_t_192 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_190, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_191, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_192, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+6995:                                                 a[k] = 1
                        __pyx_t_193 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_193, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+6996:                                                 break
                        goto __pyx_L83_break;
+6997:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+6998:                                             if I[i, j - 1] == Io:
                      __pyx_t_194 = __pyx_v_i;
                      __pyx_t_195 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_194, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_195, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+6999:                                                 I[i, j] = Io
                        __pyx_t_196 = __pyx_v_i;
                        __pyx_t_197 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_196, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_197, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7000:                                                 Col[i, j, 2] = red
                        __pyx_t_198 = __pyx_v_i;
                        __pyx_t_199 = __pyx_v_j;
                        __pyx_t_200 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_199, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_200, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7001:                                                 Col[i, j, 1] = green
                        __pyx_t_201 = __pyx_v_i;
                        __pyx_t_202 = __pyx_v_j;
                        __pyx_t_203 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_201, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_202, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7002:                                                 Col[i, j, 0] = blue
                        __pyx_t_204 = __pyx_v_i;
                        __pyx_t_205 = __pyx_v_j;
                        __pyx_t_206 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_204, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_205, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_206, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7003:                                                 a[k] = 1
                        __pyx_t_207 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_207, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7004:                                                 break
                        goto __pyx_L83_break;
 7005: 
+7006:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7007:                                             if I[i, j + 1] == Io:
                      __pyx_t_208 = __pyx_v_i;
                      __pyx_t_209 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_208, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_209, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7008:                                                 I[i, j] = Io
                        __pyx_t_210 = __pyx_v_i;
                        __pyx_t_211 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_210, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_211, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7009:                                                 Col[i, j, 2] = red
                        __pyx_t_212 = __pyx_v_i;
                        __pyx_t_213 = __pyx_v_j;
                        __pyx_t_214 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_212, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_213, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_214, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7010:                                                 Col[i, j, 1] = green
                        __pyx_t_215 = __pyx_v_i;
                        __pyx_t_216 = __pyx_v_j;
                        __pyx_t_217 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_215, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_216, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_217, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7011:                                                 Col[i, j, 0] = blue
                        __pyx_t_218 = __pyx_v_i;
                        __pyx_t_219 = __pyx_v_j;
                        __pyx_t_220 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_218, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_219, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_220, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7012:                                                 a[k] = 1
                        __pyx_t_221 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_221, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7013:                                                 break
                        goto __pyx_L83_break;
 7014: 
 7015: 
+7016:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7017:                                             if  I[i + 1, j] == Io:
                      __pyx_t_222 = (__pyx_v_i + 1);
                      __pyx_t_223 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_222, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_223, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7018:                                                 I[i, j] = Io
                        __pyx_t_224 = __pyx_v_i;
                        __pyx_t_225 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_224, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_225, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7019:                                                 Col[i, j, 2] = red
                        __pyx_t_226 = __pyx_v_i;
                        __pyx_t_227 = __pyx_v_j;
                        __pyx_t_228 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_226, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_227, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_228, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7020:                                                 Col[i, j, 1] = green
                        __pyx_t_229 = __pyx_v_i;
                        __pyx_t_230 = __pyx_v_j;
                        __pyx_t_231 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_229, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_230, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7021:                                                 Col[i, j, 0] = blue
                        __pyx_t_232 = __pyx_v_i;
                        __pyx_t_233 = __pyx_v_j;
                        __pyx_t_234 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_232, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_233, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_234, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7022:                                                 a[k] = 1
                        __pyx_t_235 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_235, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7023:                                                 break
                        goto __pyx_L83_break;
 7024: 
 7025: 
 7026: 
+7027:                         for i in range(io - 1, imin - 1, -1):
            __pyx_t_102 = (__pyx_v_imin - 1);
            for (__pyx_t_101 = (__pyx_v_io - 1); __pyx_t_101 > __pyx_t_102; __pyx_t_101-=1) {
              __pyx_v_i = __pyx_t_101;
+7028:                             for j in range(jo, jmax + 1):
              __pyx_t_118 = (__pyx_v_jmax + 1);
              for (__pyx_t_117 = __pyx_v_jo; __pyx_t_117 < __pyx_t_118; __pyx_t_117+=1) {
                __pyx_v_j = __pyx_t_117;
+7029:                                 for dum in range(1):
                for (__pyx_t_119 = 0; __pyx_t_119 < 1; __pyx_t_119+=1) {
                  __pyx_v_dum = __pyx_t_119;
+7030:                                     if II[i, j] == Io:
                  __pyx_t_236 = __pyx_v_i;
                  __pyx_t_237 = __pyx_v_j;
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_236, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_237, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
                }
                __pyx_L98_break:;
              }
+7031:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7032:                                             if  I[i - 1, j] == Io:
                      __pyx_t_238 = (__pyx_v_i - 1);
                      __pyx_t_239 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_238, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_239, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7033:                                                 I[i, j] = Io
                        __pyx_t_240 = __pyx_v_i;
                        __pyx_t_241 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_240, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_241, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7034:                                                 Col[i, j, 2] = red
                        __pyx_t_242 = __pyx_v_i;
                        __pyx_t_243 = __pyx_v_j;
                        __pyx_t_244 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_242, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_243, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_244, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7035:                                                 Col[i, j, 1] = green
                        __pyx_t_245 = __pyx_v_i;
                        __pyx_t_246 = __pyx_v_j;
                        __pyx_t_247 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_245, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_246, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_247, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7036:                                                 Col[i, j, 0] = blue
                        __pyx_t_248 = __pyx_v_i;
                        __pyx_t_249 = __pyx_v_j;
                        __pyx_t_250 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_248, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_249, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_250, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7037:                                                 a[k] = 1
                        __pyx_t_251 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_251, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7038:                                                 break
                        goto __pyx_L98_break;
+7039:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7040:                                             if I[i, j - 1] == Io:
                      __pyx_t_252 = __pyx_v_i;
                      __pyx_t_253 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_252, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_253, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7041:                                                 I[i, j] = Io
                        __pyx_t_254 = __pyx_v_i;
                        __pyx_t_255 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_254, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_255, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7042:                                                 Col[i, j, 2] = red
                        __pyx_t_256 = __pyx_v_i;
                        __pyx_t_257 = __pyx_v_j;
                        __pyx_t_258 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_256, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_257, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_258, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7043:                                                 Col[i, j, 1] = green
                        __pyx_t_259 = __pyx_v_i;
                        __pyx_t_260 = __pyx_v_j;
                        __pyx_t_261 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_259, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_260, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_261, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7044:                                                 Col[i, j, 0] = blue
                        __pyx_t_262 = __pyx_v_i;
                        __pyx_t_263 = __pyx_v_j;
                        __pyx_t_264 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_262, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_263, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_264, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7045:                                                 a[k] = 1
                        __pyx_t_265 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_265, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7046:                                                 break
                        goto __pyx_L98_break;
 7047: 
+7048:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7049:                                             if I[i, j + 1] == Io:
                      __pyx_t_266 = __pyx_v_i;
                      __pyx_t_267 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_266, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_267, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7050:                                                 I[i, j] = Io
                        __pyx_t_268 = __pyx_v_i;
                        __pyx_t_269 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_268, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_269, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7051:                                                 Col[i, j, 2] = red
                        __pyx_t_270 = __pyx_v_i;
                        __pyx_t_271 = __pyx_v_j;
                        __pyx_t_272 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_270, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_271, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_272, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7052:                                                 Col[i, j, 1] = green
                        __pyx_t_273 = __pyx_v_i;
                        __pyx_t_274 = __pyx_v_j;
                        __pyx_t_275 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_273, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_274, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_275, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7053:                                                 Col[i, j, 0] = blue
                        __pyx_t_276 = __pyx_v_i;
                        __pyx_t_277 = __pyx_v_j;
                        __pyx_t_278 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_276, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_277, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_278, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7054:                                                 a[k] = 1
                        __pyx_t_279 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_279, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7055:                                                 break
                        goto __pyx_L98_break;
 7056: 
 7057: 
+7058:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7059:                                             if  I[i + 1, j] == Io:
                      __pyx_t_280 = (__pyx_v_i + 1);
                      __pyx_t_281 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_280, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_281, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7060:                                                 I[i, j] = Io
                        __pyx_t_282 = __pyx_v_i;
                        __pyx_t_283 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_282, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_283, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7061:                                                 Col[i, j, 2] = red
                        __pyx_t_284 = __pyx_v_i;
                        __pyx_t_285 = __pyx_v_j;
                        __pyx_t_286 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_285, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_286, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7062:                                                 Col[i, j, 1] = green
                        __pyx_t_287 = __pyx_v_i;
                        __pyx_t_288 = __pyx_v_j;
                        __pyx_t_289 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_287, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_288, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_289, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7063:                                                 Col[i, j, 0] = blue
                        __pyx_t_290 = __pyx_v_i;
                        __pyx_t_291 = __pyx_v_j;
                        __pyx_t_292 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_290, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_291, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_292, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7064:                                                 a[k] = 1
                        __pyx_t_293 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_293, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7065:                                                 break
                        goto __pyx_L98_break;
 7066: 
+7067:                             for j in range(jo - 1, jmin - 1, -1):
              __pyx_t_118 = (__pyx_v_jmin - 1);
              for (__pyx_t_117 = (__pyx_v_jo - 1); __pyx_t_117 > __pyx_t_118; __pyx_t_117-=1) {
                __pyx_v_j = __pyx_t_117;
+7068:                                 for dum in range(1):
                for (__pyx_t_119 = 0; __pyx_t_119 < 1; __pyx_t_119+=1) {
                  __pyx_v_dum = __pyx_t_119;
+7069:                                     if II[i, j] == Io:
                  __pyx_t_294 = __pyx_v_i;
                  __pyx_t_295 = __pyx_v_j;
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_294, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_295, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
                }
                __pyx_L111_break:;
              }
            }
+7070:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7071:                                             if  I[i - 1, j] == Io:
                      __pyx_t_296 = (__pyx_v_i - 1);
                      __pyx_t_297 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_296, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_297, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7072:                                                 I[i, j] = Io
                        __pyx_t_298 = __pyx_v_i;
                        __pyx_t_299 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_298, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_299, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7073:                                                 Col[i, j, 2] = red
                        __pyx_t_300 = __pyx_v_i;
                        __pyx_t_301 = __pyx_v_j;
                        __pyx_t_302 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_300, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_301, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_302, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7074:                                                 Col[i, j, 1] = green
                        __pyx_t_303 = __pyx_v_i;
                        __pyx_t_304 = __pyx_v_j;
                        __pyx_t_305 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_303, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_304, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_305, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7075:                                                 Col[i, j, 0] = blue
                        __pyx_t_306 = __pyx_v_i;
                        __pyx_t_307 = __pyx_v_j;
                        __pyx_t_308 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_306, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_307, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_308, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7076:                                                 a[k] = 1
                        __pyx_t_309 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_309, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7077:                                                 break
                        goto __pyx_L111_break;
+7078:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7079:                                             if I[i, j - 1] == Io:
                      __pyx_t_310 = __pyx_v_i;
                      __pyx_t_311 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_310, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_311, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7080:                                                 I[i, j] = Io
                        __pyx_t_312 = __pyx_v_i;
                        __pyx_t_313 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_312, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_313, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7081:                                                 Col[i, j, 2] = red
                        __pyx_t_314 = __pyx_v_i;
                        __pyx_t_315 = __pyx_v_j;
                        __pyx_t_316 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_314, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_315, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_316, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7082:                                                 Col[i, j, 1] = green
                        __pyx_t_317 = __pyx_v_i;
                        __pyx_t_318 = __pyx_v_j;
                        __pyx_t_319 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_317, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_318, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_319, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7083:                                                 Col[i, j, 0] = blue
                        __pyx_t_320 = __pyx_v_i;
                        __pyx_t_321 = __pyx_v_j;
                        __pyx_t_322 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_320, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_321, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_322, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7084:                                                 a[k] = 1
                        __pyx_t_323 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_323, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7085:                                                 break
                        goto __pyx_L111_break;
 7086: 
+7087:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7088:                                             if I[i, j + 1] == Io:
                      __pyx_t_324 = __pyx_v_i;
                      __pyx_t_325 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_324, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_325, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7089:                                                 I[i, j] = Io
                        __pyx_t_326 = __pyx_v_i;
                        __pyx_t_327 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_326, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_327, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7090:                                                 Col[i, j, 2] = red
                        __pyx_t_328 = __pyx_v_i;
                        __pyx_t_329 = __pyx_v_j;
                        __pyx_t_330 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_328, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_329, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_330, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7091:                                                 Col[i, j, 1] = green
                        __pyx_t_331 = __pyx_v_i;
                        __pyx_t_332 = __pyx_v_j;
                        __pyx_t_333 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_331, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_332, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_333, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7092:                                                 Col[i, j, 0] = blue
                        __pyx_t_334 = __pyx_v_i;
                        __pyx_t_335 = __pyx_v_j;
                        __pyx_t_336 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_334, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_335, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_336, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7093:                                                 a[k] = 1
                        __pyx_t_337 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_337, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7094:                                                 break
                        goto __pyx_L111_break;
 7095: 
 7096: 
+7097:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7098:                                             if  I[i + 1, j] == Io:
                      __pyx_t_338 = (__pyx_v_i + 1);
                      __pyx_t_339 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_338, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_339, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7099:                                                 I[i, j] = Io
                        __pyx_t_340 = __pyx_v_i;
                        __pyx_t_341 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_340, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_341, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7100:                                                 Col[i, j, 2] = red
                        __pyx_t_342 = __pyx_v_i;
                        __pyx_t_343 = __pyx_v_j;
                        __pyx_t_344 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_342, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_343, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_344, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7101:                                                 Col[i, j, 1] = green
                        __pyx_t_345 = __pyx_v_i;
                        __pyx_t_346 = __pyx_v_j;
                        __pyx_t_347 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_345, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_346, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_347, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7102:                                                 Col[i, j, 0] = blue
                        __pyx_t_348 = __pyx_v_i;
                        __pyx_t_349 = __pyx_v_j;
                        __pyx_t_350 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_348, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_349, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_350, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7103:                                                 a[k] = 1
                        __pyx_t_351 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_351, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7104:                                                 break
                        goto __pyx_L111_break;
 7105: 
 7106: 
 7107: 
 7108:                         # INWARD
+7109:                         for i in range(imax, io - 1, -1):
            __pyx_t_102 = (__pyx_v_io - 1);
            for (__pyx_t_101 = __pyx_v_imax; __pyx_t_101 > __pyx_t_102; __pyx_t_101-=1) {
              __pyx_v_i = __pyx_t_101;
+7110:                             for j in range(jo, jmax + 1):
              __pyx_t_118 = (__pyx_v_jmax + 1);
              for (__pyx_t_117 = __pyx_v_jo; __pyx_t_117 < __pyx_t_118; __pyx_t_117+=1) {
                __pyx_v_j = __pyx_t_117;
+7111:                                 for dum in range(1):
                for (__pyx_t_119 = 0; __pyx_t_119 < 1; __pyx_t_119+=1) {
                  __pyx_v_dum = __pyx_t_119;
+7112:                                     if II[i, j] == Io:
                  __pyx_t_352 = __pyx_v_i;
                  __pyx_t_353 = __pyx_v_j;
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_352, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_353, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
                }
                __pyx_L126_break:;
              }
+7113:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7114:                                             if  I[i - 1, j] == Io:
                      __pyx_t_354 = (__pyx_v_i - 1);
                      __pyx_t_355 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_354, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_355, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7115:                                                 I[i, j] = Io
                        __pyx_t_356 = __pyx_v_i;
                        __pyx_t_357 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_356, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_357, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7116:                                                 Col[i, j, 2] = red
                        __pyx_t_358 = __pyx_v_i;
                        __pyx_t_359 = __pyx_v_j;
                        __pyx_t_360 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_358, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_359, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_360, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7117:                                                 Col[i, j, 1] = green
                        __pyx_t_361 = __pyx_v_i;
                        __pyx_t_362 = __pyx_v_j;
                        __pyx_t_363 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_361, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_362, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_363, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7118:                                                 Col[i, j, 0] = blue
                        __pyx_t_364 = __pyx_v_i;
                        __pyx_t_365 = __pyx_v_j;
                        __pyx_t_366 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_364, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_365, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_366, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7119:                                                 a[k] = 1
                        __pyx_t_367 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_367, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7120:                                                 break
                        goto __pyx_L126_break;
+7121:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7122:                                             if I[i, j - 1] == Io:
                      __pyx_t_368 = __pyx_v_i;
                      __pyx_t_369 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_368, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_369, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7123:                                                 I[i, j] = Io
                        __pyx_t_370 = __pyx_v_i;
                        __pyx_t_371 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_370, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_371, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7124:                                                 Col[i, j, 2] = red
                        __pyx_t_372 = __pyx_v_i;
                        __pyx_t_373 = __pyx_v_j;
                        __pyx_t_374 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_372, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_373, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_374, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7125:                                                 Col[i, j, 1] = green
                        __pyx_t_375 = __pyx_v_i;
                        __pyx_t_376 = __pyx_v_j;
                        __pyx_t_377 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_375, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_376, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_377, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7126:                                                 Col[i, j, 0] = blue
                        __pyx_t_378 = __pyx_v_i;
                        __pyx_t_379 = __pyx_v_j;
                        __pyx_t_380 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_378, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_379, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_380, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7127:                                                 a[k] = 1
                        __pyx_t_381 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_381, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7128:                                                 break
                        goto __pyx_L126_break;
 7129: 
+7130:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7131:                                             if I[i, j + 1] == Io:
                      __pyx_t_382 = __pyx_v_i;
                      __pyx_t_383 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_382, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_383, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7132:                                                 I[i, j] = Io
                        __pyx_t_384 = __pyx_v_i;
                        __pyx_t_385 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_384, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_385, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7133:                                                 Col[i, j, 2] = red
                        __pyx_t_386 = __pyx_v_i;
                        __pyx_t_387 = __pyx_v_j;
                        __pyx_t_388 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_386, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_387, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_388, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7134:                                                 Col[i, j, 1] = green
                        __pyx_t_389 = __pyx_v_i;
                        __pyx_t_390 = __pyx_v_j;
                        __pyx_t_391 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_389, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_390, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_391, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7135:                                                 Col[i, j, 0] = blue
                        __pyx_t_392 = __pyx_v_i;
                        __pyx_t_393 = __pyx_v_j;
                        __pyx_t_394 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_392, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_393, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_394, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7136:                                                 a[k] = 1
                        __pyx_t_395 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_395, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7137:                                                 break
                        goto __pyx_L126_break;
 7138: 
 7139: 
+7140:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7141:                                             if  I[i + 1, j] == Io:
                      __pyx_t_396 = (__pyx_v_i + 1);
                      __pyx_t_397 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_396, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_397, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7142:                                                 I[i, j] = Io
                        __pyx_t_398 = __pyx_v_i;
                        __pyx_t_399 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_398, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_399, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7143:                                                 Col[i, j, 2] = red
                        __pyx_t_400 = __pyx_v_i;
                        __pyx_t_401 = __pyx_v_j;
                        __pyx_t_402 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_400, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_401, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_402, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7144:                                                 Col[i, j, 1] = green
                        __pyx_t_403 = __pyx_v_i;
                        __pyx_t_404 = __pyx_v_j;
                        __pyx_t_405 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_403, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_404, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_405, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7145:                                                 Col[i, j, 0] = blue
                        __pyx_t_406 = __pyx_v_i;
                        __pyx_t_407 = __pyx_v_j;
                        __pyx_t_408 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_406, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_407, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_408, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7146:                                                 a[k] = 1
                        __pyx_t_409 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_409, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7147:                                                 break
                        goto __pyx_L126_break;
 7148: 
+7149:                             for j in range(jo - 1, jmin - 1, -1):
              __pyx_t_118 = (__pyx_v_jmin - 1);
              for (__pyx_t_117 = (__pyx_v_jo - 1); __pyx_t_117 > __pyx_t_118; __pyx_t_117-=1) {
                __pyx_v_j = __pyx_t_117;
+7150:                                 for dum in range(1):
                for (__pyx_t_119 = 0; __pyx_t_119 < 1; __pyx_t_119+=1) {
                  __pyx_v_dum = __pyx_t_119;
+7151:                                     if II[i, j] == Io:
                  __pyx_t_410 = __pyx_v_i;
                  __pyx_t_411 = __pyx_v_j;
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_410, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_411, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
                }
                __pyx_L139_break:;
              }
            }
+7152:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7153:                                             if  I[i - 1, j] == Io:
                      __pyx_t_412 = (__pyx_v_i - 1);
                      __pyx_t_413 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_412, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_413, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7154:                                                 I[i, j] = Io
                        __pyx_t_414 = __pyx_v_i;
                        __pyx_t_415 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_414, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_415, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7155:                                                 Col[i, j, 2] = red
                        __pyx_t_416 = __pyx_v_i;
                        __pyx_t_417 = __pyx_v_j;
                        __pyx_t_418 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_416, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_417, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_418, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7156:                                                 Col[i, j, 1] = green
                        __pyx_t_419 = __pyx_v_i;
                        __pyx_t_420 = __pyx_v_j;
                        __pyx_t_421 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_419, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_420, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_421, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7157:                                                 Col[i, j, 0] = blue
                        __pyx_t_422 = __pyx_v_i;
                        __pyx_t_423 = __pyx_v_j;
                        __pyx_t_424 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_422, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_423, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_424, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7158:                                                 a[k] = 1
                        __pyx_t_425 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_425, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7159:                                                 break
                        goto __pyx_L139_break;
+7160:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7161:                                             if I[i, j - 1] == Io:
                      __pyx_t_426 = __pyx_v_i;
                      __pyx_t_427 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_426, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_427, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7162:                                                 I[i, j] = Io
                        __pyx_t_428 = __pyx_v_i;
                        __pyx_t_429 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_428, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_429, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7163:                                                 Col[i, j, 2] = red
                        __pyx_t_430 = __pyx_v_i;
                        __pyx_t_431 = __pyx_v_j;
                        __pyx_t_432 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_430, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_431, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_432, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7164:                                                 Col[i, j, 1] = green
                        __pyx_t_433 = __pyx_v_i;
                        __pyx_t_434 = __pyx_v_j;
                        __pyx_t_435 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_433, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_434, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_435, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7165:                                                 Col[i, j, 0] = blue
                        __pyx_t_436 = __pyx_v_i;
                        __pyx_t_437 = __pyx_v_j;
                        __pyx_t_438 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_436, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_437, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_438, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7166:                                                 a[k] = 1
                        __pyx_t_439 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_439, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7167:                                                 break
                        goto __pyx_L139_break;
 7168: 
+7169:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7170:                                             if I[i, j + 1] == Io:
                      __pyx_t_440 = __pyx_v_i;
                      __pyx_t_441 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_440, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_441, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7171:                                                 I[i, j] = Io
                        __pyx_t_442 = __pyx_v_i;
                        __pyx_t_443 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_442, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_443, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7172:                                                 Col[i, j, 2] = red
                        __pyx_t_444 = __pyx_v_i;
                        __pyx_t_445 = __pyx_v_j;
                        __pyx_t_446 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_444, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_445, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_446, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7173:                                                 Col[i, j, 1] = green
                        __pyx_t_447 = __pyx_v_i;
                        __pyx_t_448 = __pyx_v_j;
                        __pyx_t_449 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_447, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_448, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_449, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7174:                                                 Col[i, j, 0] = blue
                        __pyx_t_450 = __pyx_v_i;
                        __pyx_t_451 = __pyx_v_j;
                        __pyx_t_452 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_450, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_451, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_452, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7175:                                                 a[k] = 1
                        __pyx_t_453 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_453, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7176:                                                 break
                        goto __pyx_L139_break;
 7177: 
 7178: 
+7179:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7180:                                             if  I[i + 1, j] == Io:
                      __pyx_t_454 = (__pyx_v_i + 1);
                      __pyx_t_455 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_454, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_455, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7181:                                                 I[i, j] = Io
                        __pyx_t_456 = __pyx_v_i;
                        __pyx_t_457 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_456, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_457, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7182:                                                 Col[i, j, 2] = red
                        __pyx_t_458 = __pyx_v_i;
                        __pyx_t_459 = __pyx_v_j;
                        __pyx_t_460 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_458, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_459, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_460, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7183:                                                 Col[i, j, 1] = green
                        __pyx_t_461 = __pyx_v_i;
                        __pyx_t_462 = __pyx_v_j;
                        __pyx_t_463 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_461, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_462, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_463, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7184:                                                 Col[i, j, 0] = blue
                        __pyx_t_464 = __pyx_v_i;
                        __pyx_t_465 = __pyx_v_j;
                        __pyx_t_466 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_464, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_465, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_466, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7185:                                                 a[k] = 1
                        __pyx_t_467 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_467, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7186:                                                 break
                        goto __pyx_L139_break;
 7187: 
 7188: 
 7189: 
+7190:                         for i in range(imin, io, -1):
            __pyx_t_102 = __pyx_v_io;
            for (__pyx_t_101 = __pyx_v_imin; __pyx_t_101 > __pyx_t_102; __pyx_t_101-=1) {
              __pyx_v_i = __pyx_t_101;
+7191:                             for j in range(jo, jmax + 1):
              __pyx_t_118 = (__pyx_v_jmax + 1);
              for (__pyx_t_117 = __pyx_v_jo; __pyx_t_117 < __pyx_t_118; __pyx_t_117+=1) {
                __pyx_v_j = __pyx_t_117;
+7192:                                 for dum in range(1):
                for (__pyx_t_119 = 0; __pyx_t_119 < 1; __pyx_t_119+=1) {
                  __pyx_v_dum = __pyx_t_119;
+7193:                                     if II[i, j] == Io:
                  __pyx_t_468 = __pyx_v_i;
                  __pyx_t_469 = __pyx_v_j;
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_468, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_469, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
                }
                __pyx_L154_break:;
              }
+7194:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7195:                                             if  I[i - 1, j] == Io:
                      __pyx_t_470 = (__pyx_v_i - 1);
                      __pyx_t_471 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_470, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_471, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7196:                                                 I[i, j] = Io
                        __pyx_t_472 = __pyx_v_i;
                        __pyx_t_473 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_472, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_473, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7197:                                                 Col[i, j, 2] = red
                        __pyx_t_474 = __pyx_v_i;
                        __pyx_t_475 = __pyx_v_j;
                        __pyx_t_476 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_474, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_475, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_476, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7198:                                                 Col[i, j, 1] = green
                        __pyx_t_477 = __pyx_v_i;
                        __pyx_t_478 = __pyx_v_j;
                        __pyx_t_479 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_477, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_478, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_479, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7199:                                                 Col[i, j, 0] = blue
                        __pyx_t_480 = __pyx_v_i;
                        __pyx_t_481 = __pyx_v_j;
                        __pyx_t_482 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_480, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_481, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_482, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7200:                                                 a[k] = 1
                        __pyx_t_483 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_483, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7201:                                                 break
                        goto __pyx_L154_break;
+7202:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7203:                                             if I[i, j - 1] == Io:
                      __pyx_t_484 = __pyx_v_i;
                      __pyx_t_485 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_484, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_485, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7204:                                                 I[i, j] = Io
                        __pyx_t_486 = __pyx_v_i;
                        __pyx_t_487 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_486, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_487, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7205:                                                 Col[i, j, 2] = red
                        __pyx_t_488 = __pyx_v_i;
                        __pyx_t_489 = __pyx_v_j;
                        __pyx_t_490 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_488, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_489, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_490, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7206:                                                 Col[i, j, 1] = green
                        __pyx_t_491 = __pyx_v_i;
                        __pyx_t_492 = __pyx_v_j;
                        __pyx_t_493 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_491, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_492, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_493, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7207:                                                 Col[i, j, 0] = blue
                        __pyx_t_494 = __pyx_v_i;
                        __pyx_t_495 = __pyx_v_j;
                        __pyx_t_496 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_494, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_495, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_496, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7208:                                                 a[k] = 1
                        __pyx_t_497 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_497, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7209:                                                 break
                        goto __pyx_L154_break;
 7210: 
+7211:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7212:                                             if I[i, j + 1] == Io:
                      __pyx_t_498 = __pyx_v_i;
                      __pyx_t_499 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_498, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_499, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7213:                                                 I[i, j] = Io
                        __pyx_t_500 = __pyx_v_i;
                        __pyx_t_501 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_500, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_501, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7214:                                                 Col[i, j, 2] = red
                        __pyx_t_502 = __pyx_v_i;
                        __pyx_t_503 = __pyx_v_j;
                        __pyx_t_504 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_502, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_503, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_504, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7215:                                                 Col[i, j, 1] = green
                        __pyx_t_505 = __pyx_v_i;
                        __pyx_t_506 = __pyx_v_j;
                        __pyx_t_507 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_505, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_506, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_507, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7216:                                                 Col[i, j, 0] = blue
                        __pyx_t_508 = __pyx_v_i;
                        __pyx_t_509 = __pyx_v_j;
                        __pyx_t_510 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_508, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_509, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_510, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7217:                                                 a[k] = 1
                        __pyx_t_511 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_511, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7218:                                                 break
                        goto __pyx_L154_break;
 7219: 
 7220: 
+7221:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7222:                                             if  I[i + 1, j] == Io:
                      __pyx_t_512 = (__pyx_v_i + 1);
                      __pyx_t_513 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_512, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_513, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7223:                                                 I[i, j] = Io
                        __pyx_t_514 = __pyx_v_i;
                        __pyx_t_515 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_514, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_515, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7224:                                                 Col[i, j, 2] = red
                        __pyx_t_516 = __pyx_v_i;
                        __pyx_t_517 = __pyx_v_j;
                        __pyx_t_518 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_516, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_517, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_518, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7225:                                                 Col[i, j, 1] = green
                        __pyx_t_519 = __pyx_v_i;
                        __pyx_t_520 = __pyx_v_j;
                        __pyx_t_521 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_519, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_520, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_521, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7226:                                                 Col[i, j, 0] = blue
                        __pyx_t_522 = __pyx_v_i;
                        __pyx_t_523 = __pyx_v_j;
                        __pyx_t_524 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_522, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_523, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_524, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7227:                                                 a[k] = 1
                        __pyx_t_525 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_525, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7228:                                                 break
                        goto __pyx_L154_break;
 7229: 
+7230:                             for j in range(jo - 1, jmin - 1, -1):
              __pyx_t_118 = (__pyx_v_jmin - 1);
              for (__pyx_t_117 = (__pyx_v_jo - 1); __pyx_t_117 > __pyx_t_118; __pyx_t_117-=1) {
                __pyx_v_j = __pyx_t_117;
+7231:                                 for dum in range(1):
                for (__pyx_t_119 = 0; __pyx_t_119 < 1; __pyx_t_119+=1) {
                  __pyx_v_dum = __pyx_t_119;
+7232:                                     if II[i, j] == Io:
                  __pyx_t_526 = __pyx_v_i;
                  __pyx_t_527 = __pyx_v_j;
                  __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_526, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_527, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_24) {
/* … */
                  }
                }
                __pyx_L167_break:;
              }
            }
+7233:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7234:                                             if  I[i - 1, j] == Io:
                      __pyx_t_528 = (__pyx_v_i - 1);
                      __pyx_t_529 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_528, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_529, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7235:                                                 I[i, j] = Io
                        __pyx_t_530 = __pyx_v_i;
                        __pyx_t_531 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_530, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_531, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7236:                                                 Col[i, j, 2] = red
                        __pyx_t_532 = __pyx_v_i;
                        __pyx_t_533 = __pyx_v_j;
                        __pyx_t_534 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_532, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_533, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_534, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7237:                                                 Col[i, j, 1] = green
                        __pyx_t_535 = __pyx_v_i;
                        __pyx_t_536 = __pyx_v_j;
                        __pyx_t_537 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_535, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_536, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_537, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7238:                                                 Col[i, j, 0] = blue
                        __pyx_t_538 = __pyx_v_i;
                        __pyx_t_539 = __pyx_v_j;
                        __pyx_t_540 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_538, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_539, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_540, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7239:                                                 a[k] = 1
                        __pyx_t_541 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_541, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7240:                                                 break
                        goto __pyx_L167_break;
+7241:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7242:                                             if I[i, j - 1] == Io:
                      __pyx_t_542 = __pyx_v_i;
                      __pyx_t_543 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_542, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_543, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7243:                                                 I[i, j] = Io
                        __pyx_t_544 = __pyx_v_i;
                        __pyx_t_545 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_544, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_545, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7244:                                                 Col[i, j, 2] = red
                        __pyx_t_546 = __pyx_v_i;
                        __pyx_t_547 = __pyx_v_j;
                        __pyx_t_548 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_546, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_547, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_548, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7245:                                                 Col[i, j, 1] = green
                        __pyx_t_549 = __pyx_v_i;
                        __pyx_t_550 = __pyx_v_j;
                        __pyx_t_551 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_549, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_550, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_551, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7246:                                                 Col[i, j, 0] = blue
                        __pyx_t_552 = __pyx_v_i;
                        __pyx_t_553 = __pyx_v_j;
                        __pyx_t_554 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_552, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_553, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_554, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7247:                                                 a[k] = 1
                        __pyx_t_555 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_555, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7248:                                                 break
                        goto __pyx_L167_break;
 7249: 
+7250:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7251:                                             if I[i, j + 1] == Io:
                      __pyx_t_556 = __pyx_v_i;
                      __pyx_t_557 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_556, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_557, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7252:                                                 I[i, j] = Io
                        __pyx_t_558 = __pyx_v_i;
                        __pyx_t_559 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_558, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_559, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7253:                                                 Col[i, j, 2] = red
                        __pyx_t_560 = __pyx_v_i;
                        __pyx_t_561 = __pyx_v_j;
                        __pyx_t_562 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_560, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_561, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_562, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7254:                                                 Col[i, j, 1] = green
                        __pyx_t_563 = __pyx_v_i;
                        __pyx_t_564 = __pyx_v_j;
                        __pyx_t_565 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_563, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_564, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_565, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7255:                                                 Col[i, j, 0] = blue
                        __pyx_t_566 = __pyx_v_i;
                        __pyx_t_567 = __pyx_v_j;
                        __pyx_t_568 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_566, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_567, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_568, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7256:                                                 a[k] = 1
                        __pyx_t_569 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_569, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7257:                                                 break
                        goto __pyx_L167_break;
 7258: 
 7259: 
+7260:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7261:                                             if  I[i + 1, j] == Io:
                      __pyx_t_570 = (__pyx_v_i + 1);
                      __pyx_t_571 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_570, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_571, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7262:                                                 I[i, j] = Io
                        __pyx_t_572 = __pyx_v_i;
                        __pyx_t_573 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_572, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_573, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7263:                                                 Col[i, j, 2] = red
                        __pyx_t_574 = __pyx_v_i;
                        __pyx_t_575 = __pyx_v_j;
                        __pyx_t_576 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_574, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_575, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_576, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7264:                                                 Col[i, j, 1] = green
                        __pyx_t_577 = __pyx_v_i;
                        __pyx_t_578 = __pyx_v_j;
                        __pyx_t_579 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_577, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_578, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_579, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7265:                                                 Col[i, j, 0] = blue
                        __pyx_t_580 = __pyx_v_i;
                        __pyx_t_581 = __pyx_v_j;
                        __pyx_t_582 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_580, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_581, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_582, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7266:                                                 a[k] = 1
                        __pyx_t_583 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_583, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7267:                                                 break
                        goto __pyx_L167_break;
 7268: 
+7269:                 if a[k] == 0:
        __pyx_t_102 = __pyx_v_k;
        __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
        if (__pyx_t_24) {
/* … */
        }
+7270:                     xmin = max(0, xo - MAJceil)
          __pyx_t_101 = (__pyx_v_xo - __pyx_v_MAJceil);
          __pyx_t_584 = 0;
          if (((__pyx_t_101 > __pyx_t_584) != 0)) {
            __pyx_t_118 = __pyx_t_101;
          } else {
            __pyx_t_118 = __pyx_t_584;
          }
          __pyx_v_xmin = __pyx_t_118;
+7271:                     xmax = min(m - 1, xo + MAJceil)
          __pyx_t_118 = (__pyx_v_xo + __pyx_v_MAJceil);
          __pyx_t_101 = (__pyx_v_m - 1);
          if (((__pyx_t_118 < __pyx_t_101) != 0)) {
            __pyx_t_117 = __pyx_t_118;
          } else {
            __pyx_t_117 = __pyx_t_101;
          }
          __pyx_v_xmax = __pyx_t_117;
+7272:                     ymin = max(0, yo - MINceil)
          __pyx_t_117 = (__pyx_v_yo - __pyx_v_MINceil);
          __pyx_t_584 = 0;
          if (((__pyx_t_117 > __pyx_t_584) != 0)) {
            __pyx_t_118 = __pyx_t_117;
          } else {
            __pyx_t_118 = __pyx_t_584;
          }
          __pyx_v_ymin = __pyx_t_118;
+7273:                     ymax = min(n - 1, yo + MINceil)
          __pyx_t_118 = (__pyx_v_yo + __pyx_v_MINceil);
          __pyx_t_117 = (__pyx_v_n - 1);
          if (((__pyx_t_118 < __pyx_t_117) != 0)) {
            __pyx_t_101 = __pyx_t_118;
          } else {
            __pyx_t_101 = __pyx_t_117;
          }
          __pyx_v_ymax = __pyx_t_101;
+7274:                     a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
          __pyx_t_101 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 7275: 
 7276: 
 7277: 
 7278: 
+7279:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+7280:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
+7281:         nnz = cv2.countNonZero(I)
    __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
    __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_35);
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __pyx_t_25 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_35))) {
      __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_35);
      if (likely(__pyx_t_25)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_35);
        __Pyx_INCREF(__pyx_t_25);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_35, function);
      }
    }
    if (!__pyx_t_25) {
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_35, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7281, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7281, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_25); __pyx_t_25 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7281, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
    __pyx_t_78 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_7); if (unlikely((__pyx_t_78 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7281, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_nnz = __pyx_t_78;
  }
 7282: 
+7283:     obj.p = p
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_7) < 0) __PYX_ERR(0, 7283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+7284:     toc = time.time()
  __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_35, __pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_t_35 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_35 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_35)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_35);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (__pyx_t_35) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_35); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7284, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7284, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 7284, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_toc = __pyx_t_23;
+7285:     obj.exetime = toc - tic
  __pyx_t_7 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_7) < 0) __PYX_ERR(0, 7285, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+7286:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_delete); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_arange); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_585 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_585)) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_585);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_585, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_25);
  PyTuple_SET_ITEM(__pyx_t_585, 0+__pyx_t_27, __pyx_t_25);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_585, 1+__pyx_t_27, __pyx_t_6);
  __pyx_t_25 = 0;
  __pyx_t_6 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_585, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_585); __pyx_t_585 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_35))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_35);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_35);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_35, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_585 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_585)) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_585);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_585, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_585, 0+__pyx_t_27, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_585, 1+__pyx_t_27, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_585, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_585); __pyx_t_585 = 0;
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_7) < 0) __PYX_ERR(0, 7286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+7287:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_35 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __pyx_t_585 = __Pyx_PyObject_GetAttrStr(__pyx_t_35, __pyx_n_s_delete); if (unlikely(!__pyx_t_585)) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_585);
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_arange); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_25 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_25)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_25);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_1 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__pyx_t_25) {
    __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_25); __pyx_t_25 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_27, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_27, __pyx_t_6);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_585))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_585);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_585);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_585, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_1 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__pyx_t_8) {
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_27, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_35);
  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_27, __pyx_t_35);
  __pyx_t_35 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_585, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_585); __pyx_t_585 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_7) < 0) __PYX_ERR(0, 7287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+7288:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 7288, __pyx_L1_error)
+7289:     obj.adotVal = adotVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_adotVal, ((PyObject *)__pyx_v_adotVal)) < 0) __PYX_ERR(0, 7289, __pyx_L1_error)
+7290:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 7290, __pyx_L1_error)
+7291:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 7292: 
+7293: def Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_53Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_53Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot = {"Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot", (PyCFunction)__pyx_pw_9libEVOLVE_53Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_53Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_52Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_52Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PY_LONG_LONG __pyx_v_seq;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  PyObject *__pyx_v_Thetafunc = NULL;
  PyObject *__pyx_v_Rfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_delX;
  PY_LONG_LONG __pyx_v_delY;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_Min;
  float __pyx_v_Maj;
  float __pyx_v_theta;
  float __pyx_v_c;
  float __pyx_v_s;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Theta = 0;
  PyArrayObject *__pyx_v_Rvals = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Rvals;
  __Pyx_Buffer __pyx_pybuffer_Rvals;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Theta;
  __Pyx_Buffer __pyx_pybuffer_Theta;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot", 0);
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Theta.pybuffer.buf = NULL;
  __pyx_pybuffer_Theta.refcount = 0;
  __pyx_pybuffernd_Theta.data = NULL;
  __pyx_pybuffernd_Theta.rcbuffer = &__pyx_pybuffer_Theta;
  __pyx_pybuffer_Rvals.pybuffer.buf = NULL;
  __pyx_pybuffer_Rvals.refcount = 0;
  __pyx_pybuffernd_Rvals.data = NULL;
  __pyx_pybuffernd_Rvals.rcbuffer = &__pyx_pybuffer_Rvals;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_35);
  __Pyx_XDECREF(__pyx_t_39);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rvals.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rvals.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF(__pyx_v_Thetafunc);
  __Pyx_XDECREF(__pyx_v_Rfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Theta);
  __Pyx_XDECREF((PyObject *)__pyx_v_Rvals);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__63 = PyTuple_Pack(70, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_seq, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_Thetafunc, __pyx_n_s_Rfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_rad, __pyx_n_s_countim, __pyx_n_s_w, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_delX, __pyx_n_s_delY, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_dum, __pyx_n_s_Iter, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_tmp, __pyx_n_s_Min, __pyx_n_s_Maj, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_MAJ, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Theta, __pyx_n_s_Rvals, __pyx_n_s_Col, __pyx_n_s_col); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 7293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__63);
  __Pyx_GIVEREF(__pyx_tuple__63);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_53Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_without_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_9, __pyx_t_2) < 0) __PYX_ERR(0, 7293, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(1, 0, 70, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_9, 7293, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 7293, __pyx_L1_error)
 7294:     # Grabbing data from the input object
+7295:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+7296:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7296, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+7297:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7297, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+7298:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+7299:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 7299, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+7300:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+7301:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7301, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+7302:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7302, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+7303:     cdef long long seq = obj.seq
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_seq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7303, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_seq = __pyx_t_2;
+7304:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+7305:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+7306:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+7307:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+7308:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
+7309:     Thetafunc = obj.Thetafunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Thetafunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Thetafunc = __pyx_t_1;
  __pyx_t_1 = 0;
+7310:     Rfunc = obj.Rfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Rfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Rfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 7311: 
 7312:     # Declaring other variables
 7313:     cdef double tic, toc
 7314:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, dp, nnz, rad, countim, w, xt, yt, i, j, k, xo, yo, delX, delY, xmin, xmax, ymin, ymax, dum, Iter
 7315:     cdef float dt, f, t, tmp, Min, Maj, theta, c, s, red, green, blue
+7316:     cdef np.ndarray[np.int64_t, ndim = 1] MAJ = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 7316, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7316, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7316, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+7317:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 7317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7317, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7317, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+7318:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7318, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7318, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+7319:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7319, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7319, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+7320:     cdef np.ndarray[np.int_t, ndim = 1] a = np.ones(MN, dtype=np.int)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 7320, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7320, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7320, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+7321:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 7321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7321, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7321, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+7322:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 7322, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7322, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7322, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+7323:     cdef np.ndarray[np.float64_t, ndim = 1] Theta = np.zeros(MN, dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 7323, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7323, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Theta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7323, __pyx_L1_error)
    } else {__pyx_pybuffernd_Theta.diminfo[0].strides = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Theta.diminfo[0].shape = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Theta = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+7324:     cdef np.ndarray[np.float64_t, ndim = 1] Rvals = np.ones(MN, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 7324, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7324, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Rvals.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Rvals = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7324, __pyx_L1_error)
    } else {__pyx_pybuffernd_Rvals.diminfo[0].strides = __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Rvals.diminfo[0].shape = __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_Rvals = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+7325:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7325, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7325, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+7326:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 7326, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7326, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7326, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_19 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+7327:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7327, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+7328:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7328, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7328, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7328, __pyx_L1_error)
  }
  __pyx_t_19 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_5));
  __pyx_t_5 = 0;
+7329:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7329, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7329, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 7329, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_tic = __pyx_t_23;
 7330: 
 7331: 
 7332: 
+7333:     t = 0
  __pyx_v_t = 0.0;
+7334:     p = 0
  __pyx_v_p = 0;
+7335:     dp = 0
  __pyx_v_dp = 0;
+7336:     countim = 0
  __pyx_v_countim = 0;
+7337:     nnz = 0
  __pyx_v_nnz = 0;
+7338:     Iter = 1
  __pyx_v_Iter = 1;
+7339:     while nnz < MN:
  while (1) {
    __pyx_t_24 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_24) break;
+7340:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+7341:         dt = 1.0 / Gt(t)
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_6 = __pyx_v_Gt; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7341, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7341, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7341, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_5, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 7341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_dt = __pyx_t_3;
+7342:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_6 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_8 = __pyx_v_Ndot; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7342, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7342, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7342, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7342, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_dp = __pyx_t_2;
+7343:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+7344:         if pdelNxy == []:
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7344, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_24 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_24 < 0)) __PYX_ERR(0, 7344, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_24) {
/* … */
      goto __pyx_L5;
    }
+7345:             if seq == 3 or seq == 4 or seq == 6:
      switch (__pyx_v_seq) {
        case 3:
        case 4:
        case 6:
/* … */
        break;
        default:
+7346:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L7_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L7_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_24 = __pyx_t_26;
        __pyx_L7_bool_binop_done:;
        if (__pyx_t_24) {
/* … */
        }
+7347:                     count = 0
          __pyx_v_count = 0;
+7348:                     while count < dp:
          while (1) {
            __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_24) break;
+7349:                         xt = np.random.randint(0, m - 1)
            __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7349, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7349, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7349, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7349, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_25 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_25)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_25);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_1 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7349, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (__pyx_t_25) {
              __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_25); __pyx_t_25 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_27, __pyx_t_8);
            __pyx_t_8 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7349, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7349, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_2;
+7350:                         yt = np.random.randint(0, n - 1)
            __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7350, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7350, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7350, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7350, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_8 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_8)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_8);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7350, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            if (__pyx_t_8) {
              __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_8); __pyx_t_8 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_25, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7350, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7350, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_2;
+7351:                         if I[xt, yt] == 0:
            __pyx_t_2 = __pyx_v_xt;
            __pyx_t_28 = __pyx_v_yt;
            __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
+7352:                             I[xt, yt] = p + count + 1
              __pyx_t_29 = __pyx_v_xt;
              __pyx_t_30 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+7353:                             X[p + count] = xt
              __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+7354:                             Y[p + count] = yt
              __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+7355:                             a[p + count] = 1
              __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7356:                             MAJ[p + count] = 1
              __pyx_t_34 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1;
+7357:                             Rvals[p + count] = Rfunc(xt, yt, p + count + 1, 1, 0)
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7357, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7357, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7357, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_8 = __pyx_v_Rfunc; __pyx_t_7 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_35 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7357, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_35, 0+__pyx_t_27, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_25);
              PyTuple_SET_ITEM(__pyx_t_35, 1+__pyx_t_27, __pyx_t_25);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_35, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_35, 3+__pyx_t_27, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_35, 4+__pyx_t_27, __pyx_int_0);
              __pyx_t_5 = 0;
              __pyx_t_25 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_35, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7357, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7357, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_37 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_Rvals.diminfo[0].strides) = __pyx_t_36;
+7358:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, Rvals[p + count], 1)
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7358, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_35 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7358, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7358, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_38 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_25 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_Rvals.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7358, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_5 = __pyx_v_Thetafunc; __pyx_t_7 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_39 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7358, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_39, 0+__pyx_t_27, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_35);
              PyTuple_SET_ITEM(__pyx_t_39, 1+__pyx_t_27, __pyx_t_35);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_39, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_25);
              PyTuple_SET_ITEM(__pyx_t_39, 3+__pyx_t_27, __pyx_t_25);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_39, 4+__pyx_t_27, __pyx_int_1);
              __pyx_t_8 = 0;
              __pyx_t_35 = 0;
              __pyx_t_1 = 0;
              __pyx_t_25 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_39, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7358, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7358, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_40 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_36;
+7359:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_41 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_42 = 0;
              __pyx_t_43 = __pyx_v_xt;
              __pyx_t_44 = __pyx_v_yt;
              __pyx_t_45 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_41, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_42, __pyx_pybuffernd_col.diminfo[1].strides));
+7360:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_46 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_47 = 1;
              __pyx_t_48 = __pyx_v_xt;
              __pyx_t_49 = __pyx_v_yt;
              __pyx_t_50 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_47, __pyx_pybuffernd_col.diminfo[1].strides));
+7361:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_51 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_52 = 2;
              __pyx_t_53 = __pyx_v_xt;
              __pyx_t_54 = __pyx_v_yt;
              __pyx_t_55 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_54, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_55, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_52, __pyx_pybuffernd_col.diminfo[1].strides));
+7362:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+7363:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 7364:             else:
+7365:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L14_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L14_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_24 = __pyx_t_26;
        __pyx_L14_bool_binop_done:;
        if (__pyx_t_24) {
/* … */
        }
        break;
      }
+7366:                     count = 0
          __pyx_v_count = 0;
+7367:                     while count < dp:
          while (1) {
            __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_24) break;
+7368:                         xt = np.random.randint(0, m - 1)
            __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7368, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7368, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_39);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7368, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
            __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7368, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_39);
            __pyx_t_25 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_25)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_25);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_1 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7368, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (__pyx_t_25) {
              __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_25); __pyx_t_25 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_39);
            PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_27, __pyx_t_39);
            __pyx_t_39 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7368, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_56 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_56 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7368, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_56;
+7369:                         yt = np.random.randint(0, n - 1)
            __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7369, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7369, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7369, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7369, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_39 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_39)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_39);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7369, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            if (__pyx_t_39) {
              __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_39); __pyx_t_39 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_25, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7369, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_56 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_56 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7369, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_56;
+7370:                         if I[xt, yt] == 0:
            __pyx_t_56 = __pyx_v_xt;
            __pyx_t_57 = __pyx_v_yt;
            __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_57, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
+7371:                             I[xt, yt] = p + count + 1
              __pyx_t_58 = __pyx_v_xt;
              __pyx_t_59 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_59, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+7372:                             X[p + count] = xt
              __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+7373:                             Y[p + count] = yt
              __pyx_t_61 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+7374:                             a[p + count] = 1
              __pyx_t_62 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7375:                             MAJ[p + count] = 1
              __pyx_t_63 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1;
+7376:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, 1)
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7376, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7376, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7376, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_39 = __pyx_v_Thetafunc; __pyx_t_35 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_39))) {
                __pyx_t_35 = PyMethod_GET_SELF(__pyx_t_39);
                if (likely(__pyx_t_35)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_39);
                  __Pyx_INCREF(__pyx_t_35);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_39, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_8 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7376, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (__pyx_t_35) {
                __Pyx_GIVEREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_35); __pyx_t_35 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_27, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_25);
              PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_27, __pyx_t_25);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_27, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_27, __pyx_int_1);
              __pyx_t_5 = 0;
              __pyx_t_25 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_39, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7376, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7376, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_64 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_36;
+7377:                             Rvals[p + count] = Rfunc(xt, yt, p + count + 1, 1, Theta[p + count])
              __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7377, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7377, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7377, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_65 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_25 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7377, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_5 = __pyx_v_Rfunc; __pyx_t_35 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_35 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_35)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_35);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7377, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_35) {
                __Pyx_GIVEREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_35); __pyx_t_35 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_39);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_27, __pyx_t_39);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_27, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_27, __pyx_int_1);
              __Pyx_GIVEREF(__pyx_t_25);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_27, __pyx_t_25);
              __pyx_t_39 = 0;
              __pyx_t_8 = 0;
              __pyx_t_1 = 0;
              __pyx_t_25 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7377, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7377, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_66 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_Rvals.diminfo[0].strides) = __pyx_t_36;
+7378:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_67 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_68 = 0;
              __pyx_t_69 = __pyx_v_xt;
              __pyx_t_70 = __pyx_v_yt;
              __pyx_t_71 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_70, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_col.diminfo[1].strides));
+7379:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_72 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_73 = 1;
              __pyx_t_74 = __pyx_v_xt;
              __pyx_t_75 = __pyx_v_yt;
              __pyx_t_76 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_col.diminfo[1].strides));
+7380:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_77 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_78 = 2;
              __pyx_t_79 = __pyx_v_xt;
              __pyx_t_80 = __pyx_v_yt;
              __pyx_t_81 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_80, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_81, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_78, __pyx_pybuffernd_col.diminfo[1].strides));
+7381:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+7382:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 7383:         else:
+7384:             if seq == 3 or seq == 4 or seq == 6:
    /*else*/ {
      switch (__pyx_v_seq) {
        case 3:
        case 4:
        case 6:
/* … */
        break;
        default:
+7385:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L21_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L21_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_24 = __pyx_t_26;
        __pyx_L21_bool_binop_done:;
        if (__pyx_t_24) {
/* … */
        }
+7386:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7386, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7386, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7386, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7386, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7386, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_39 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7386, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_39);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_8); __pyx_t_8 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_39, 0+__pyx_t_27, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_39, 1+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_39, 2+__pyx_t_27, __pyx_t_5);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_39, 3+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_25);
          PyTuple_SET_ITEM(__pyx_t_39, 4+__pyx_t_27, __pyx_t_25);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_39, 5+__pyx_t_27, __pyx_t_1);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_39, 6+__pyx_t_27, __pyx_int_1);
          __pyx_t_5 = 0;
          __pyx_t_25 = 0;
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_39, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7386, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 7386, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_39 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_39 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_39);
            #else
            __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7386, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_39 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7386, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_39);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7386, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_82 = Py_TYPE(__pyx_t_1)->tp_iternext;
            index = 0; __pyx_t_7 = __pyx_t_82(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L24_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_7);
            index = 1; __pyx_t_39 = __pyx_t_82(__pyx_t_1); if (unlikely(!__pyx_t_39)) goto __pyx_L24_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_39);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_82(__pyx_t_1), 2) < 0) __PYX_ERR(0, 7386, __pyx_L1_error)
            __pyx_t_82 = NULL;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            goto __pyx_L25_unpacking_done;
            __pyx_L24_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_82 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 7386, __pyx_L1_error)
            __pyx_L25_unpacking_done:;
          }
          if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7386, __pyx_L1_error)
          if (!(likely(((__pyx_t_39) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_39, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7386, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7386, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_7));
          __pyx_t_7 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_39);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7386, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_39));
          __pyx_t_39 = 0;
+7387:                     w = 0
          __pyx_v_w = 0;
+7388:                     count = 0
          __pyx_v_count = 0;
+7389:                     while count < dp:
          while (1) {
            __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_24) break;
+7390:                         xt = xtrial[w]
            __pyx_t_83 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+7391:                         yt = ytrial[w]
            __pyx_t_84 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+7392:                         if I[xt, yt] == 0:
            __pyx_t_85 = __pyx_v_xt;
            __pyx_t_86 = __pyx_v_yt;
            __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_24) {
/* … */
            }
+7393:                             I[xt, yt] = p + count + 1
              __pyx_t_87 = __pyx_v_xt;
              __pyx_t_88 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_88, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+7394:                             X[p + count] = xt
              __pyx_t_89 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+7395:                             Y[p + count] = yt
              __pyx_t_90 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+7396:                             a[p + count] = 1
              __pyx_t_91 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7397:                             MAJ[p + count] = 1
              __pyx_t_92 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1;
+7398:                             Rvals[p + count] = Rfunc(xt, yt, p + count + 1, 1, 0)
              __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7398, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7398, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7398, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_25 = __pyx_v_Rfunc; __pyx_t_5 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_25))) {
                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_25);
                if (likely(__pyx_t_5)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
                  __Pyx_INCREF(__pyx_t_5);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_25, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_8 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7398, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (__pyx_t_5) {
                __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_39);
              PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_27, __pyx_t_39);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_27, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_27, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_27, __pyx_int_0);
              __pyx_t_39 = 0;
              __pyx_t_7 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7398, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7398, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_93 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_Rvals.diminfo[0].strides) = __pyx_t_36;
+7399:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, Rvals[p + count], 1)
              __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7399, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7399, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7399, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_94 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_7 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_Rvals.diminfo[0].strides))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7399, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_39 = __pyx_v_Thetafunc; __pyx_t_5 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_39))) {
                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_39);
                if (likely(__pyx_t_5)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_39);
                  __Pyx_INCREF(__pyx_t_5);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_39, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_35 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7399, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              if (__pyx_t_5) {
                __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_5); __pyx_t_5 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_25);
              PyTuple_SET_ITEM(__pyx_t_35, 0+__pyx_t_27, __pyx_t_25);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_35, 1+__pyx_t_27, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_35, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_35, 3+__pyx_t_27, __pyx_t_7);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_35, 4+__pyx_t_27, __pyx_int_1);
              __pyx_t_25 = 0;
              __pyx_t_8 = 0;
              __pyx_t_1 = 0;
              __pyx_t_7 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_39, __pyx_t_35, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7399, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
              __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7399, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_95 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_36;
+7400:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_96 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_97 = 0;
              __pyx_t_98 = __pyx_v_xt;
              __pyx_t_99 = __pyx_v_yt;
              __pyx_t_100 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_97, __pyx_pybuffernd_col.diminfo[1].strides));
+7401:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_101 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_102 = 1;
              __pyx_t_103 = __pyx_v_xt;
              __pyx_t_104 = __pyx_v_yt;
              __pyx_t_105 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_104, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_105, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_col.diminfo[1].strides));
+7402:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_106 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_107 = 2;
              __pyx_t_108 = __pyx_v_xt;
              __pyx_t_109 = __pyx_v_yt;
              __pyx_t_110 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_col.diminfo[1].strides));
+7403:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+7404:                         if w < dp - 1:
            __pyx_t_24 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_24) {
/* … */
              goto __pyx_L29;
            }
+7405:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 7406:                         else:
+7407:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7407, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7407, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
              __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7407, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7407, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7407, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_8 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_35))) {
                __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_35);
                if (likely(__pyx_t_8)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_35);
                  __Pyx_INCREF(__pyx_t_8);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_35, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_25 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7407, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              if (__pyx_t_8) {
                __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_8); __pyx_t_8 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_39);
              PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_27, __pyx_t_39);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_27, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_27, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_25, 5+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_25, 6+__pyx_t_27, __pyx_int_1);
              __pyx_t_39 = 0;
              __pyx_t_7 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_25, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7407, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
              __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 7407, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_35 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_25 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_35 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_25 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_35);
                __Pyx_INCREF(__pyx_t_25);
                #else
                __pyx_t_35 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7407, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_35);
                __pyx_t_25 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7407, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_25);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7407, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_1);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_82 = Py_TYPE(__pyx_t_1)->tp_iternext;
                index = 0; __pyx_t_35 = __pyx_t_82(__pyx_t_1); if (unlikely(!__pyx_t_35)) goto __pyx_L30_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_35);
                index = 1; __pyx_t_25 = __pyx_t_82(__pyx_t_1); if (unlikely(!__pyx_t_25)) goto __pyx_L30_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_25);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_82(__pyx_t_1), 2) < 0) __PYX_ERR(0, 7407, __pyx_L1_error)
                __pyx_t_82 = NULL;
                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                goto __pyx_L31_unpacking_done;
                __pyx_L30_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                __pyx_t_82 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 7407, __pyx_L1_error)
                __pyx_L31_unpacking_done:;
              }
              if (!(likely(((__pyx_t_35) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_35, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7407, __pyx_L1_error)
              if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7407, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_35);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7407, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_35));
              __pyx_t_35 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_25);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7407, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_25));
              __pyx_t_25 = 0;
+7408:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L29:;
          }
+7409:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 7410:             else:
+7411:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L33_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L33_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_24 = __pyx_t_26;
        __pyx_L33_bool_binop_done:;
        if (__pyx_t_24) {
/* … */
        }
        break;
      }
    }
    __pyx_L5:;
+7412:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7412, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7412, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_35);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7412, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7412, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7412, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_39 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_35))) {
            __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_35);
            if (likely(__pyx_t_39)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_35);
              __Pyx_INCREF(__pyx_t_39);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_35, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_8 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7412, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          if (__pyx_t_39) {
            __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_39); __pyx_t_39 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_27, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_25);
          PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_27, __pyx_t_25);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_27, __pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_8, 5+__pyx_t_27, __pyx_t_7);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_8, 6+__pyx_t_27, __pyx_int_1);
          __pyx_t_25 = 0;
          __pyx_t_1 = 0;
          __pyx_t_7 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7412, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 7412, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_35 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_35 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_35);
            __Pyx_INCREF(__pyx_t_8);
            #else
            __pyx_t_35 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7412, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_35);
            __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7412, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7412, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_82 = Py_TYPE(__pyx_t_7)->tp_iternext;
            index = 0; __pyx_t_35 = __pyx_t_82(__pyx_t_7); if (unlikely(!__pyx_t_35)) goto __pyx_L36_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_35);
            index = 1; __pyx_t_8 = __pyx_t_82(__pyx_t_7); if (unlikely(!__pyx_t_8)) goto __pyx_L36_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_8);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_82(__pyx_t_7), 2) < 0) __PYX_ERR(0, 7412, __pyx_L1_error)
            __pyx_t_82 = NULL;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            goto __pyx_L37_unpacking_done;
            __pyx_L36_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_82 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 7412, __pyx_L1_error)
            __pyx_L37_unpacking_done:;
          }
          if (!(likely(((__pyx_t_35) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_35, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7412, __pyx_L1_error)
          if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7412, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_35);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7412, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_35));
          __pyx_t_35 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_8);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7412, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_8));
          __pyx_t_8 = 0;
+7413:                     w = 0
          __pyx_v_w = 0;
+7414:                     count = 0
          __pyx_v_count = 0;
+7415:                     while count < dp:
          while (1) {
            __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_24) break;
+7416:                         xt = xtrial[w]
            __pyx_t_111 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+7417:                         yt = ytrial[w]
            __pyx_t_112 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+7418:                         if I[xt, yt] == 0:
            __pyx_t_113 = __pyx_v_xt;
            __pyx_t_114 = __pyx_v_yt;
            __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_24) {
/* … */
            }
+7419:                             I[xt, yt] = p + count + 1
              __pyx_t_115 = __pyx_v_xt;
              __pyx_t_116 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+7420:                             X[p + count] = xt
              __pyx_t_117 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+7421:                             Y[p + count] = yt
              __pyx_t_118 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+7422:                             a[p + count] = 1
              __pyx_t_119 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7423:                             MAJ[p + count] = 1
              __pyx_t_120 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1;
+7424:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, 1)
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7424, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_35 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7424, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7424, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_1 = __pyx_v_Thetafunc; __pyx_t_25 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_25)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_25);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_39 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7424, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              if (__pyx_t_25) {
                __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_25); __pyx_t_25 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_39, 0+__pyx_t_27, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_35);
              PyTuple_SET_ITEM(__pyx_t_39, 1+__pyx_t_27, __pyx_t_35);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_39, 2+__pyx_t_27, __pyx_t_7);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_39, 3+__pyx_t_27, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_39, 4+__pyx_t_27, __pyx_int_1);
              __pyx_t_8 = 0;
              __pyx_t_35 = 0;
              __pyx_t_7 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_39, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7424, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7424, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_121 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_36;
+7425:                             Rvals[p + count] = Rfunc(xt, yt, p + count + 1, 1, Theta[p + count])
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7425, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7425, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7425, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_122 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_35 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7425, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_8 = __pyx_v_Rfunc; __pyx_t_25 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_25)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_25);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_5 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7425, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              if (__pyx_t_25) {
                __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_25); __pyx_t_25 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_39);
              PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_39);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_27, __pyx_t_7);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_27, __pyx_int_1);
              __Pyx_GIVEREF(__pyx_t_35);
              PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_27, __pyx_t_35);
              __pyx_t_1 = 0;
              __pyx_t_39 = 0;
              __pyx_t_7 = 0;
              __pyx_t_35 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7425, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7425, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_123 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_Rvals.diminfo[0].strides) = __pyx_t_36;
+7426:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_124 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_125 = 0;
              __pyx_t_126 = __pyx_v_xt;
              __pyx_t_127 = __pyx_v_yt;
              __pyx_t_128 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_col.diminfo[1].strides));
+7427:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_129 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_130 = 1;
              __pyx_t_131 = __pyx_v_xt;
              __pyx_t_132 = __pyx_v_yt;
              __pyx_t_133 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_col.diminfo[1].strides));
+7428:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_134 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_135 = 2;
              __pyx_t_136 = __pyx_v_xt;
              __pyx_t_137 = __pyx_v_yt;
              __pyx_t_138 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_136, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_135, __pyx_pybuffernd_col.diminfo[1].strides));
+7429:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+7430:                         if w < dp - 1:
            __pyx_t_24 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_24) {
/* … */
              goto __pyx_L41;
            }
+7431:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 7432:                         else:
+7433:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7433, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7433, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7433, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_35 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7433, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7433, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_39 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_39)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_39);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_1 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7433, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__pyx_t_39) {
                __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_39); __pyx_t_39 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_27, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_27, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_27, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_27, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_35);
              PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_27, __pyx_t_35);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_1, 5+__pyx_t_27, __pyx_t_7);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_1, 6+__pyx_t_27, __pyx_int_1);
              __pyx_t_8 = 0;
              __pyx_t_35 = 0;
              __pyx_t_7 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7433, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 7433, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_1);
                #else
                __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7433, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_5);
                __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7433, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_1);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7433, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_7);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_82 = Py_TYPE(__pyx_t_7)->tp_iternext;
                index = 0; __pyx_t_5 = __pyx_t_82(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L42_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_5);
                index = 1; __pyx_t_1 = __pyx_t_82(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L42_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_1);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_82(__pyx_t_7), 2) < 0) __PYX_ERR(0, 7433, __pyx_L1_error)
                __pyx_t_82 = NULL;
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
                goto __pyx_L43_unpacking_done;
                __pyx_L42_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
                __pyx_t_82 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 7433, __pyx_L1_error)
                __pyx_L43_unpacking_done:;
              }
              if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7433, __pyx_L1_error)
              if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7433, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_5);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7433, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_5));
              __pyx_t_5 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7433, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_1));
              __pyx_t_1 = 0;
+7434:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L41:;
          }
+7435:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 7436: 
+7437:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+7438:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 7439: 
+7440:         for k in range(0, p):
    __pyx_t_139 = __pyx_v_p;
    for (__pyx_t_140 = 0; __pyx_t_140 < __pyx_t_139; __pyx_t_140+=1) {
      __pyx_v_k = __pyx_t_140;
+7441:             if a[k] == 1:
      __pyx_t_141 = __pyx_v_k;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_141, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+7442:                 a[k] = 0
        __pyx_t_142 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+7443:                 xo = X[k]
        __pyx_t_143 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_X.diminfo[0].strides));
+7444:                 yo = Y[k]
        __pyx_t_144 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_144, __pyx_pybuffernd_Y.diminfo[0].strides));
+7445:                 Io = I[xo, yo]
        __pyx_t_145 = __pyx_v_xo;
        __pyx_t_146 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_I.diminfo[1].strides));
+7446:                 theta = Theta[k]
        __pyx_t_147 = __pyx_v_k;
        __pyx_v_theta = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_Theta.diminfo[0].strides));
+7447:                 c = math.cos(theta)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7447, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_cos); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7447, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7447, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (!__pyx_t_7) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7447, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_35 = PyTuple_New(1+1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7447, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_35);
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_7); __pyx_t_7 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_35, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_35, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7447, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 7447, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_v_c = __pyx_t_3;
+7448:                 s = -math.sin(theta)
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7448, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sin); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7448, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_35);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7448, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_35))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_35);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_35);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_35, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_35, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7448, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7448, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
          __pyx_t_5 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7448, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        __pyx_t_35 = PyNumber_Negative(__pyx_t_6); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7448, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_35);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_35); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 7448, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        __pyx_v_s = __pyx_t_3;
+7449:                 Maj = MAJ[k]
        __pyx_t_148 = __pyx_v_k;
        __pyx_v_Maj = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_MAJ.diminfo[0].strides));
+7450:                 Min = Maj / Rvals[k]
        __pyx_t_149 = __pyx_v_k;
        __pyx_v_Min = (((__pyx_t_5numpy_float64_t)__pyx_v_Maj) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rvals.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_Rvals.diminfo[0].strides)));
+7451:                 delX = math.ceil(math.sqrt((Maj * c) ** 2 + (Min * s) ** 2))
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7451, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7451, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7451, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7451, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = PyFloat_FromDouble((powf((__pyx_v_Maj * __pyx_v_c), 2.0) + powf((__pyx_v_Min * __pyx_v_s), 2.0))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7451, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7451, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_39 = PyTuple_New(1+1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7451, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_39);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_39, 0+1, __pyx_t_5);
          __pyx_t_5 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_39, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7451, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_35 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7451, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_35);
        } else {
          __pyx_t_39 = PyTuple_New(1+1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7451, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_39);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_39, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_39, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7451, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_35);
          __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_150 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_35); if (unlikely((__pyx_t_150 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7451, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        __pyx_v_delX = __pyx_t_150;
+7452:                 delY = math.ceil(math.sqrt((Maj * s) ** 2 + (Min * c) ** 2))
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ceil); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_39);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyFloat_FromDouble((powf((__pyx_v_Maj * __pyx_v_s), 2.0) + powf((__pyx_v_Min * __pyx_v_c), 2.0))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_5) {
          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7452, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_7);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7452, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7452, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_39))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_39);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_39);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_39, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_35 = __Pyx_PyObject_CallOneArg(__pyx_t_39, __pyx_t_7); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7452, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_35);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7452, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
          __pyx_t_7 = 0;
          __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_39, __pyx_t_8, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7452, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_35);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
        __pyx_t_150 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_35); if (unlikely((__pyx_t_150 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7452, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        __pyx_v_delY = __pyx_t_150;
+7453:                 red = col[k, 0]
        __pyx_t_150 = __pyx_v_k;
        __pyx_t_151 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_151, __pyx_pybuffernd_col.diminfo[1].strides));
+7454:                 green = col[k, 1]
        __pyx_t_152 = __pyx_v_k;
        __pyx_t_153 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_152, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_153, __pyx_pybuffernd_col.diminfo[1].strides));
+7455:                 blue = col[k, 2]
        __pyx_t_154 = __pyx_v_k;
        __pyx_t_155 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_155, __pyx_pybuffernd_col.diminfo[1].strides));
 7456: 
+7457:                 for deli in range(0, delX + 1):
        __pyx_t_156 = (__pyx_v_delX + 1);
        for (__pyx_t_157 = 0; __pyx_t_157 < __pyx_t_156; __pyx_t_157+=1) {
          __pyx_v_deli = __pyx_t_157;
+7458:                     for delj in range(0, delY + 1):
          __pyx_t_158 = (__pyx_v_delY + 1);
          for (__pyx_t_159 = 0; __pyx_t_159 < __pyx_t_158; __pyx_t_159+=1) {
            __pyx_v_delj = __pyx_t_159;
+7459:                         if ((deli * c - delj * s) / Maj) ** 2 + ((deli * s + delj * c) / Min) ** 2 < 1:
            __pyx_t_24 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_Maj), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_Min), 2.0)) < 1.0) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
        }
 7460: 
+7461:                             i, j = xo + deli, yo + delj
              __pyx_t_160 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_161 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_160;
              __pyx_v_j = __pyx_t_161;
+7462:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_162 = (__pyx_t_26 != 0);
              if (__pyx_t_162) {
              } else {
                __pyx_t_24 = __pyx_t_162;
                goto __pyx_L53_bool_binop_done;
              }
              __pyx_t_162 = (0 <= __pyx_v_j);
              if (__pyx_t_162) {
                __pyx_t_162 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_162 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L53_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+7463:                                 if I[i, j] == 0:
                __pyx_t_161 = __pyx_v_i;
                __pyx_t_160 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_161, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_160, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+7464:                                     for dum in range(1):
                  for (__pyx_t_163 = 0; __pyx_t_163 < 1; __pyx_t_163+=1) {
                    __pyx_v_dum = __pyx_t_163;
 7465: 
+7466:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7467:                                             if  I[i - 1, j] == Io:
                      __pyx_t_164 = (__pyx_v_i - 1);
                      __pyx_t_165 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_164, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_165, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7468:                                                 I[i, j] = Io
                        __pyx_t_166 = __pyx_v_i;
                        __pyx_t_167 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_166, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_167, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7469:                                                 Col[i, j, 2] = red
                        __pyx_t_168 = __pyx_v_i;
                        __pyx_t_169 = __pyx_v_j;
                        __pyx_t_170 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_170, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7470:                                                 Col[i, j, 1] = green
                        __pyx_t_171 = __pyx_v_i;
                        __pyx_t_172 = __pyx_v_j;
                        __pyx_t_173 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_171, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_172, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_173, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7471:                                                 Col[i, j, 0] = blue
                        __pyx_t_174 = __pyx_v_i;
                        __pyx_t_175 = __pyx_v_j;
                        __pyx_t_176 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_174, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_175, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_176, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7472:                                                 a[k] = 1
                        __pyx_t_177 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7473:                                                 break
                        goto __pyx_L57_break;
+7474:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7475:                                             if I[i, j - 1] == Io:
                      __pyx_t_178 = __pyx_v_i;
                      __pyx_t_179 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_178, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_179, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7476:                                                 I[i, j] = Io
                        __pyx_t_180 = __pyx_v_i;
                        __pyx_t_181 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_180, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_181, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7477:                                                 Col[i, j, 2] = red
                        __pyx_t_182 = __pyx_v_i;
                        __pyx_t_183 = __pyx_v_j;
                        __pyx_t_184 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_183, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_184, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7478:                                                 Col[i, j, 1] = green
                        __pyx_t_185 = __pyx_v_i;
                        __pyx_t_186 = __pyx_v_j;
                        __pyx_t_187 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_185, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7479:                                                 Col[i, j, 0] = blue
                        __pyx_t_188 = __pyx_v_i;
                        __pyx_t_189 = __pyx_v_j;
                        __pyx_t_190 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_190, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7480:                                                 a[k] = 1
                        __pyx_t_191 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_191, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7481:                                                 break
                        goto __pyx_L57_break;
 7482: 
+7483:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7484:                                             if I[i, j + 1] == Io:
                      __pyx_t_192 = __pyx_v_i;
                      __pyx_t_193 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_192, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_193, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7485:                                                 I[i, j] = Io
                        __pyx_t_194 = __pyx_v_i;
                        __pyx_t_195 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_194, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_195, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7486:                                                 Col[i, j, 2] = red
                        __pyx_t_196 = __pyx_v_i;
                        __pyx_t_197 = __pyx_v_j;
                        __pyx_t_198 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_196, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_197, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_198, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7487:                                                 Col[i, j, 1] = green
                        __pyx_t_199 = __pyx_v_i;
                        __pyx_t_200 = __pyx_v_j;
                        __pyx_t_201 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_199, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_200, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_201, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7488:                                                 Col[i, j, 0] = blue
                        __pyx_t_202 = __pyx_v_i;
                        __pyx_t_203 = __pyx_v_j;
                        __pyx_t_204 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_202, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_204, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7489:                                                 a[k] = 1
                        __pyx_t_205 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_205, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7490:                                                 break
                        goto __pyx_L57_break;
 7491: 
 7492: 
+7493:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
                  }
                  __pyx_L57_break:;
+7494:                                             if  I[i + 1, j] == Io:
                      __pyx_t_206 = (__pyx_v_i + 1);
                      __pyx_t_207 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_206, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_207, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7495:                                                 I[i, j] = Io
                        __pyx_t_208 = __pyx_v_i;
                        __pyx_t_209 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_208, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_209, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7496:                                                 Col[i, j, 2] = red
                        __pyx_t_210 = __pyx_v_i;
                        __pyx_t_211 = __pyx_v_j;
                        __pyx_t_212 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_210, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_211, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_212, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7497:                                                 Col[i, j, 1] = green
                        __pyx_t_213 = __pyx_v_i;
                        __pyx_t_214 = __pyx_v_j;
                        __pyx_t_215 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_213, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_214, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_215, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7498:                                                 Col[i, j, 0] = blue
                        __pyx_t_216 = __pyx_v_i;
                        __pyx_t_217 = __pyx_v_j;
                        __pyx_t_218 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_216, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_217, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_218, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7499:                                                 a[k] = 1
                        __pyx_t_219 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_219, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7500:                                                 break
                        goto __pyx_L57_break;
 7501: 
 7502: 
+7503:                             i, j = xo - deli, yo - delj
              __pyx_t_163 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_220 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_163;
              __pyx_v_j = __pyx_t_220;
+7504:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_162 = (__pyx_t_26 != 0);
              if (__pyx_t_162) {
              } else {
                __pyx_t_24 = __pyx_t_162;
                goto __pyx_L67_bool_binop_done;
              }
              __pyx_t_162 = (0 <= __pyx_v_j);
              if (__pyx_t_162) {
                __pyx_t_162 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_162 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L67_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+7505:                                 if I[i, j] == 0:
                __pyx_t_220 = __pyx_v_i;
                __pyx_t_163 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_220, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+7506:                                     for dum in range(1):
                  for (__pyx_t_221 = 0; __pyx_t_221 < 1; __pyx_t_221+=1) {
                    __pyx_v_dum = __pyx_t_221;
 7507: 
+7508:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7509:                                             if  I[i - 1, j] == Io:
                      __pyx_t_222 = (__pyx_v_i - 1);
                      __pyx_t_223 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_222, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_223, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7510:                                                 I[i, j] = Io
                        __pyx_t_224 = __pyx_v_i;
                        __pyx_t_225 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_224, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_225, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7511:                                                 Col[i, j, 2] = red
                        __pyx_t_226 = __pyx_v_i;
                        __pyx_t_227 = __pyx_v_j;
                        __pyx_t_228 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_226, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_227, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_228, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7512:                                                 Col[i, j, 1] = green
                        __pyx_t_229 = __pyx_v_i;
                        __pyx_t_230 = __pyx_v_j;
                        __pyx_t_231 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_229, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_230, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7513:                                                 Col[i, j, 0] = blue
                        __pyx_t_232 = __pyx_v_i;
                        __pyx_t_233 = __pyx_v_j;
                        __pyx_t_234 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_232, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_233, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_234, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7514:                                                 a[k] = 1
                        __pyx_t_235 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_235, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7515:                                                 break
                        goto __pyx_L71_break;
+7516:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7517:                                             if I[i, j - 1] == Io:
                      __pyx_t_236 = __pyx_v_i;
                      __pyx_t_237 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_236, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_237, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7518:                                                 I[i, j] = Io
                        __pyx_t_238 = __pyx_v_i;
                        __pyx_t_239 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_238, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_239, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7519:                                                 Col[i, j, 2] = red
                        __pyx_t_240 = __pyx_v_i;
                        __pyx_t_241 = __pyx_v_j;
                        __pyx_t_242 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_240, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_241, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_242, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7520:                                                 Col[i, j, 1] = green
                        __pyx_t_243 = __pyx_v_i;
                        __pyx_t_244 = __pyx_v_j;
                        __pyx_t_245 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_243, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_244, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_245, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7521:                                                 Col[i, j, 0] = blue
                        __pyx_t_246 = __pyx_v_i;
                        __pyx_t_247 = __pyx_v_j;
                        __pyx_t_248 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_246, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_247, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_248, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7522:                                                 a[k] = 1
                        __pyx_t_249 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_249, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7523:                                                 break
                        goto __pyx_L71_break;
 7524: 
+7525:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7526:                                             if I[i, j + 1] == Io:
                      __pyx_t_250 = __pyx_v_i;
                      __pyx_t_251 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_250, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_251, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7527:                                                 I[i, j] = Io
                        __pyx_t_252 = __pyx_v_i;
                        __pyx_t_253 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_252, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_253, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7528:                                                 Col[i, j, 2] = red
                        __pyx_t_254 = __pyx_v_i;
                        __pyx_t_255 = __pyx_v_j;
                        __pyx_t_256 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_254, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_255, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_256, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7529:                                                 Col[i, j, 1] = green
                        __pyx_t_257 = __pyx_v_i;
                        __pyx_t_258 = __pyx_v_j;
                        __pyx_t_259 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_257, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_258, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_259, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7530:                                                 Col[i, j, 0] = blue
                        __pyx_t_260 = __pyx_v_i;
                        __pyx_t_261 = __pyx_v_j;
                        __pyx_t_262 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_260, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_261, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_262, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7531:                                                 a[k] = 1
                        __pyx_t_263 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_263, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7532:                                                 break
                        goto __pyx_L71_break;
 7533: 
 7534: 
+7535:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
                  }
                  __pyx_L71_break:;
+7536:                                             if  I[i + 1, j] == Io:
                      __pyx_t_264 = (__pyx_v_i + 1);
                      __pyx_t_265 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_264, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_265, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7537:                                                 I[i, j] = Io
                        __pyx_t_266 = __pyx_v_i;
                        __pyx_t_267 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_266, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_267, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7538:                                                 Col[i, j, 2] = red
                        __pyx_t_268 = __pyx_v_i;
                        __pyx_t_269 = __pyx_v_j;
                        __pyx_t_270 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_268, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_269, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_270, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7539:                                                 Col[i, j, 1] = green
                        __pyx_t_271 = __pyx_v_i;
                        __pyx_t_272 = __pyx_v_j;
                        __pyx_t_273 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_271, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_272, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_273, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7540:                                                 Col[i, j, 0] = blue
                        __pyx_t_274 = __pyx_v_i;
                        __pyx_t_275 = __pyx_v_j;
                        __pyx_t_276 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_274, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_275, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_276, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7541:                                                 a[k] = 1
                        __pyx_t_277 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_277, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7542:                                                 break
                        goto __pyx_L71_break;
 7543: 
+7544:                 for deli in range(0, -delX - 1, -1):
        __pyx_t_156 = ((-__pyx_v_delX) - 1);
        for (__pyx_t_157 = 0; __pyx_t_157 > __pyx_t_156; __pyx_t_157-=1) {
          __pyx_v_deli = __pyx_t_157;
+7545:                     for delj in range(0, delY + 1):
          __pyx_t_158 = (__pyx_v_delY + 1);
          for (__pyx_t_159 = 0; __pyx_t_159 < __pyx_t_158; __pyx_t_159+=1) {
            __pyx_v_delj = __pyx_t_159;
+7546:                         if ((deli * c - delj * s) / Maj) ** 2 + ((deli * s + delj * c) / Min) ** 2 < 1:
            __pyx_t_24 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_Maj), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_Min), 2.0)) < 1.0) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
        }
 7547: 
+7548:                             i, j = xo + deli, yo + delj
              __pyx_t_221 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_278 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_221;
              __pyx_v_j = __pyx_t_278;
+7549:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_162 = (__pyx_t_26 != 0);
              if (__pyx_t_162) {
              } else {
                __pyx_t_24 = __pyx_t_162;
                goto __pyx_L86_bool_binop_done;
              }
              __pyx_t_162 = (0 <= __pyx_v_j);
              if (__pyx_t_162) {
                __pyx_t_162 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_162 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L86_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+7550:                                 if I[i, j] == 0:
                __pyx_t_278 = __pyx_v_i;
                __pyx_t_221 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_278, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_221, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+7551:                                     for dum in range(1):
                  for (__pyx_t_279 = 0; __pyx_t_279 < 1; __pyx_t_279+=1) {
                    __pyx_v_dum = __pyx_t_279;
 7552: 
+7553:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7554:                                             if  I[i - 1, j] == Io:
                      __pyx_t_280 = (__pyx_v_i - 1);
                      __pyx_t_281 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_280, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_281, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7555:                                                 I[i, j] = Io
                        __pyx_t_282 = __pyx_v_i;
                        __pyx_t_283 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_282, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_283, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7556:                                                 Col[i, j, 2] = red
                        __pyx_t_284 = __pyx_v_i;
                        __pyx_t_285 = __pyx_v_j;
                        __pyx_t_286 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_285, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_286, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7557:                                                 Col[i, j, 1] = green
                        __pyx_t_287 = __pyx_v_i;
                        __pyx_t_288 = __pyx_v_j;
                        __pyx_t_289 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_287, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_288, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_289, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7558:                                                 Col[i, j, 0] = blue
                        __pyx_t_290 = __pyx_v_i;
                        __pyx_t_291 = __pyx_v_j;
                        __pyx_t_292 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_290, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_291, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_292, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7559:                                                 a[k] = 1
                        __pyx_t_293 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_293, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7560:                                                 break
                        goto __pyx_L90_break;
+7561:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7562:                                             if I[i, j - 1] == Io:
                      __pyx_t_294 = __pyx_v_i;
                      __pyx_t_295 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_294, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_295, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7563:                                                 I[i, j] = Io
                        __pyx_t_296 = __pyx_v_i;
                        __pyx_t_297 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_296, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_297, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7564:                                                 Col[i, j, 2] = red
                        __pyx_t_298 = __pyx_v_i;
                        __pyx_t_299 = __pyx_v_j;
                        __pyx_t_300 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_298, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_299, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_300, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7565:                                                 Col[i, j, 1] = green
                        __pyx_t_301 = __pyx_v_i;
                        __pyx_t_302 = __pyx_v_j;
                        __pyx_t_303 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_301, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_302, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_303, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7566:                                                 Col[i, j, 0] = blue
                        __pyx_t_304 = __pyx_v_i;
                        __pyx_t_305 = __pyx_v_j;
                        __pyx_t_306 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_304, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_305, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_306, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7567:                                                 a[k] = 1
                        __pyx_t_307 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_307, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7568:                                                 break
                        goto __pyx_L90_break;
 7569: 
+7570:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7571:                                             if I[i, j + 1] == Io:
                      __pyx_t_308 = __pyx_v_i;
                      __pyx_t_309 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_308, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_309, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7572:                                                 I[i, j] = Io
                        __pyx_t_310 = __pyx_v_i;
                        __pyx_t_311 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_310, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_311, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7573:                                                 Col[i, j, 2] = red
                        __pyx_t_312 = __pyx_v_i;
                        __pyx_t_313 = __pyx_v_j;
                        __pyx_t_314 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_312, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_313, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_314, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7574:                                                 Col[i, j, 1] = green
                        __pyx_t_315 = __pyx_v_i;
                        __pyx_t_316 = __pyx_v_j;
                        __pyx_t_317 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_315, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_316, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_317, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7575:                                                 Col[i, j, 0] = blue
                        __pyx_t_318 = __pyx_v_i;
                        __pyx_t_319 = __pyx_v_j;
                        __pyx_t_320 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_318, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_319, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_320, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7576:                                                 a[k] = 1
                        __pyx_t_321 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_321, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7577:                                                 break
                        goto __pyx_L90_break;
 7578: 
 7579: 
+7580:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
                  }
                  __pyx_L90_break:;
+7581:                                             if  I[i + 1, j] == Io:
                      __pyx_t_322 = (__pyx_v_i + 1);
                      __pyx_t_323 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_322, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_323, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7582:                                                 I[i, j] = Io
                        __pyx_t_324 = __pyx_v_i;
                        __pyx_t_325 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_324, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_325, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7583:                                                 Col[i, j, 2] = red
                        __pyx_t_326 = __pyx_v_i;
                        __pyx_t_327 = __pyx_v_j;
                        __pyx_t_328 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_326, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_327, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_328, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7584:                                                 Col[i, j, 1] = green
                        __pyx_t_329 = __pyx_v_i;
                        __pyx_t_330 = __pyx_v_j;
                        __pyx_t_331 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_329, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_330, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_331, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7585:                                                 Col[i, j, 0] = blue
                        __pyx_t_332 = __pyx_v_i;
                        __pyx_t_333 = __pyx_v_j;
                        __pyx_t_334 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_332, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_333, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_334, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7586:                                                 a[k] = 1
                        __pyx_t_335 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_335, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7587:                                                 break
                        goto __pyx_L90_break;
 7588: 
 7589: 
+7590:                             i, j = xo - deli, yo - delj
              __pyx_t_279 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_336 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_279;
              __pyx_v_j = __pyx_t_336;
+7591:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_162 = (__pyx_t_26 != 0);
              if (__pyx_t_162) {
              } else {
                __pyx_t_24 = __pyx_t_162;
                goto __pyx_L100_bool_binop_done;
              }
              __pyx_t_162 = (0 <= __pyx_v_j);
              if (__pyx_t_162) {
                __pyx_t_162 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_162 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L100_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+7592:                                 if I[i, j] == 0:
                __pyx_t_336 = __pyx_v_i;
                __pyx_t_279 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_336, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_279, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+7593:                                     for dum in range(1):
                  for (__pyx_t_337 = 0; __pyx_t_337 < 1; __pyx_t_337+=1) {
                    __pyx_v_dum = __pyx_t_337;
 7594: 
+7595:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7596:                                             if  I[i - 1, j] == Io:
                      __pyx_t_338 = (__pyx_v_i - 1);
                      __pyx_t_339 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_338, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_339, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7597:                                                 I[i, j] = Io
                        __pyx_t_340 = __pyx_v_i;
                        __pyx_t_341 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_340, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_341, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7598:                                                 Col[i, j, 2] = red
                        __pyx_t_342 = __pyx_v_i;
                        __pyx_t_343 = __pyx_v_j;
                        __pyx_t_344 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_342, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_343, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_344, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7599:                                                 Col[i, j, 1] = green
                        __pyx_t_345 = __pyx_v_i;
                        __pyx_t_346 = __pyx_v_j;
                        __pyx_t_347 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_345, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_346, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_347, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7600:                                                 Col[i, j, 0] = blue
                        __pyx_t_348 = __pyx_v_i;
                        __pyx_t_349 = __pyx_v_j;
                        __pyx_t_350 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_348, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_349, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_350, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7601:                                                 a[k] = 1
                        __pyx_t_351 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_351, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7602:                                                 break
                        goto __pyx_L104_break;
+7603:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7604:                                             if I[i, j - 1] == Io:
                      __pyx_t_352 = __pyx_v_i;
                      __pyx_t_353 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_352, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_353, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7605:                                                 I[i, j] = Io
                        __pyx_t_354 = __pyx_v_i;
                        __pyx_t_355 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_354, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_355, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7606:                                                 Col[i, j, 2] = red
                        __pyx_t_356 = __pyx_v_i;
                        __pyx_t_357 = __pyx_v_j;
                        __pyx_t_358 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_356, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_357, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_358, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7607:                                                 Col[i, j, 1] = green
                        __pyx_t_359 = __pyx_v_i;
                        __pyx_t_360 = __pyx_v_j;
                        __pyx_t_361 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_359, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_360, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_361, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7608:                                                 Col[i, j, 0] = blue
                        __pyx_t_362 = __pyx_v_i;
                        __pyx_t_363 = __pyx_v_j;
                        __pyx_t_364 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_362, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_363, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_364, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7609:                                                 a[k] = 1
                        __pyx_t_365 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_365, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7610:                                                 break
                        goto __pyx_L104_break;
 7611: 
+7612:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+7613:                                             if I[i, j + 1] == Io:
                      __pyx_t_366 = __pyx_v_i;
                      __pyx_t_367 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_366, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_367, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7614:                                                 I[i, j] = Io
                        __pyx_t_368 = __pyx_v_i;
                        __pyx_t_369 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_368, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_369, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7615:                                                 Col[i, j, 2] = red
                        __pyx_t_370 = __pyx_v_i;
                        __pyx_t_371 = __pyx_v_j;
                        __pyx_t_372 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_370, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_371, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_372, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7616:                                                 Col[i, j, 1] = green
                        __pyx_t_373 = __pyx_v_i;
                        __pyx_t_374 = __pyx_v_j;
                        __pyx_t_375 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_373, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_374, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_375, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7617:                                                 Col[i, j, 0] = blue
                        __pyx_t_376 = __pyx_v_i;
                        __pyx_t_377 = __pyx_v_j;
                        __pyx_t_378 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_376, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_377, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_378, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7618:                                                 a[k] = 1
                        __pyx_t_379 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_379, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7619:                                                 break
                        goto __pyx_L104_break;
 7620: 
 7621: 
+7622:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
                  }
                  __pyx_L104_break:;
+7623:                                             if  I[i + 1, j] == Io:
                      __pyx_t_380 = (__pyx_v_i + 1);
                      __pyx_t_381 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_380, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_381, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+7624:                                                 I[i, j] = Io
                        __pyx_t_382 = __pyx_v_i;
                        __pyx_t_383 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_382, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_383, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7625:                                                 Col[i, j, 2] = red
                        __pyx_t_384 = __pyx_v_i;
                        __pyx_t_385 = __pyx_v_j;
                        __pyx_t_386 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_384, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_385, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_386, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7626:                                                 Col[i, j, 1] = green
                        __pyx_t_387 = __pyx_v_i;
                        __pyx_t_388 = __pyx_v_j;
                        __pyx_t_389 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_387, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_388, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_389, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7627:                                                 Col[i, j, 0] = blue
                        __pyx_t_390 = __pyx_v_i;
                        __pyx_t_391 = __pyx_v_j;
                        __pyx_t_392 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_390, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_391, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_392, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7628:                                                 a[k] = 1
                        __pyx_t_393 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_393, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7629:                                                 break
                        goto __pyx_L104_break;
 7630: 
 7631: 
 7632: 
+7633:                 if a[k] == 0:
        __pyx_t_156 = __pyx_v_k;
        __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
        if (__pyx_t_24) {
/* … */
        }
+7634:                     xmin = max(0, xo - delX)
          __pyx_t_157 = (__pyx_v_xo - __pyx_v_delX);
          __pyx_t_394 = 0;
          if (((__pyx_t_157 > __pyx_t_394) != 0)) {
            __pyx_t_158 = __pyx_t_157;
          } else {
            __pyx_t_158 = __pyx_t_394;
          }
          __pyx_v_xmin = __pyx_t_158;
+7635:                     xmax = min(m - 1, xo + delX)
          __pyx_t_158 = (__pyx_v_xo + __pyx_v_delX);
          __pyx_t_157 = (__pyx_v_m - 1);
          if (((__pyx_t_158 < __pyx_t_157) != 0)) {
            __pyx_t_159 = __pyx_t_158;
          } else {
            __pyx_t_159 = __pyx_t_157;
          }
          __pyx_v_xmax = __pyx_t_159;
+7636:                     ymin = max(0, yo - delY)
          __pyx_t_159 = (__pyx_v_yo - __pyx_v_delY);
          __pyx_t_394 = 0;
          if (((__pyx_t_159 > __pyx_t_394) != 0)) {
            __pyx_t_158 = __pyx_t_159;
          } else {
            __pyx_t_158 = __pyx_t_394;
          }
          __pyx_v_ymin = __pyx_t_158;
+7637:                     ymax = min(n - 1, yo + delY)
          __pyx_t_158 = (__pyx_v_yo + __pyx_v_delY);
          __pyx_t_159 = (__pyx_v_n - 1);
          if (((__pyx_t_158 < __pyx_t_159) != 0)) {
            __pyx_t_157 = __pyx_t_158;
          } else {
            __pyx_t_157 = __pyx_t_159;
          }
          __pyx_v_ymax = __pyx_t_157;
+7638:                     a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
          __pyx_t_157 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 7639: 
 7640: 
+7641:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+7642:         for i in range(p):
    __pyx_t_139 = __pyx_v_p;
    for (__pyx_t_140 = 0; __pyx_t_140 < __pyx_t_139; __pyx_t_140+=1) {
      __pyx_v_i = __pyx_t_140;
+7643:             MAJ[i] = MAJ[i] + 1
      __pyx_t_158 = __pyx_v_i;
      __pyx_t_159 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_158, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + 1);
    }
 7644: 
+7645:         nnz = cv2.countNonZero(I)
    __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7645, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_39);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7645, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
    __pyx_t_39 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_39)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_39);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_39) {
      __pyx_t_35 = __Pyx_PyObject_CallOneArg(__pyx_t_8, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_35);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_39); __pyx_t_39 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_35);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_139 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_35); if (unlikely((__pyx_t_139 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7645, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
    __pyx_v_nnz = __pyx_t_139;
  }
 7646: 
+7647:     obj.p = p
  __pyx_t_35 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_35) < 0) __PYX_ERR(0, 7647, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+7648:     toc = time.time()
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_35 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7648, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_35 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7648, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_35); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 7648, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_v_toc = __pyx_t_23;
+7649:     obj.exetime = toc - tic
  __pyx_t_35 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_35) < 0) __PYX_ERR(0, 7649, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+7650:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_delete); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_arange); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_39);
  PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_t_39);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_6);
  __pyx_t_39 = 0;
  __pyx_t_6 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_35) < 0) __PYX_ERR(0, 7650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+7651:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_delete); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_arange); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_39 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_39)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_39);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_39) {
    __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_39); __pyx_t_39 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_6);
  __pyx_t_7 = 0;
  __pyx_t_6 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_25);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_25, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_5, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_35) < 0) __PYX_ERR(0, 7651, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+7652:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 7652, __pyx_L1_error)
+7653:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 7653, __pyx_L1_error)
+7654:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 7655: 
+7656: def Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_55Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_55Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot = {"Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot", (PyCFunction)__pyx_pw_9libEVOLVE_55Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_55Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_54Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_54Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PY_LONG_LONG __pyx_v_seq;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Adotfunc = NULL;
  PyObject *__pyx_v_Rfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  PY_LONG_LONG __pyx_v_imin;
  PY_LONG_LONG __pyx_v_imax;
  PY_LONG_LONG __pyx_v_jmin;
  PY_LONG_LONG __pyx_v_jmax;
  PY_LONG_LONG __pyx_v_io;
  PY_LONG_LONG __pyx_v_jo;
  PY_LONG_LONG __pyx_v_go;
  PY_LONG_LONG __pyx_v_found;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_l1;
  PY_LONG_LONG __pyx_v_l2;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_MAJceil;
  PY_LONG_LONG __pyx_v_MINceil;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_adotValmax;
  float __pyx_v_tmp;
  float __pyx_v_MIN;
  float __pyx_v_dr;
  float __pyx_v_t;
  float __pyx_v_dt;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_adotVal = 0;
  PyArrayObject *__pyx_v_II = 0;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_Rval = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  PyObject *__pyx_v_f = NULL;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_II;
  __Pyx_Buffer __pyx_pybuffer_II;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Rval;
  __Pyx_Buffer __pyx_pybuffer_Rval;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_adotVal;
  __Pyx_Buffer __pyx_pybuffer_adotVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot", 0);
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_adotVal.pybuffer.buf = NULL;
  __pyx_pybuffer_adotVal.refcount = 0;
  __pyx_pybuffernd_adotVal.data = NULL;
  __pyx_pybuffernd_adotVal.rcbuffer = &__pyx_pybuffer_adotVal;
  __pyx_pybuffer_II.pybuffer.buf = NULL;
  __pyx_pybuffer_II.refcount = 0;
  __pyx_pybuffernd_II.data = NULL;
  __pyx_pybuffernd_II.rcbuffer = &__pyx_pybuffer_II;
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_Rval.pybuffer.buf = NULL;
  __pyx_pybuffer_Rval.refcount = 0;
  __pyx_pybuffernd_Rval.data = NULL;
  __pyx_pybuffernd_Rval.rcbuffer = &__pyx_pybuffer_Rval;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_26);
  __Pyx_XDECREF(__pyx_t_36);
  __Pyx_XDECREF(__pyx_t_40);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_II.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Adotfunc);
  __Pyx_XDECREF(__pyx_v_Rfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_adotVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_II);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_Rval);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__65 = PyTuple_Pack(82, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_seq, __pyx_n_s_fd, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_pdelNxy, __pyx_n_s_Adotfunc, __pyx_n_s_Rfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_win, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_imin, __pyx_n_s_imax, __pyx_n_s_jmin, __pyx_n_s_jmax, __pyx_n_s_io, __pyx_n_s_jo, __pyx_n_s_go, __pyx_n_s_found, __pyx_n_s_dum, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_count, __pyx_n_s_l1, __pyx_n_s_l2, __pyx_n_s_countim, __pyx_n_s_MAJceil, __pyx_n_s_MINceil, __pyx_n_s_nnz, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_dp, __pyx_n_s_p, __pyx_n_s_w, __pyx_n_s_Iter, __pyx_n_s_adotValmax, __pyx_n_s_tmp, __pyx_n_s_MIN, __pyx_n_s_dr, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_t, __pyx_n_s_dt, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_adotVal, __pyx_n_s_II, __pyx_n_s_MAJ, __pyx_n_s_Rval, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_Col, __pyx_n_s_col, __pyx_n_s_f); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 7656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__65);
  __Pyx_GIVEREF(__pyx_tuple__65);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_55Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_without_theta_with_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_10, __pyx_t_2) < 0) __PYX_ERR(0, 7656, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(1, 0, 82, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_10, 7656, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 7656, __pyx_L1_error)
 7657:     # Grabbing data from the input object
+7658:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7658, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+7659:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7659, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+7660:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7660, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+7661:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7661, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+7662:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 7662, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+7663:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+7664:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7664, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+7665:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7665, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+7666:     cdef long long seq = obj.seq
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_seq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7666, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_seq = __pyx_t_2;
+7667:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+7668:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7668, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+7669:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+7670:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7670, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+7671:     Adotfunc = obj.Adotfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Adotfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Adotfunc = __pyx_t_1;
  __pyx_t_1 = 0;
+7672:     Rfunc = obj.Rfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Rfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7672, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Rfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 7673: 
 7674:     # Declaring other variables
 7675:     cdef double tic, toc
 7676:     cdef long long deli, delj, PN, PE, PW, PS, Io, win, xmin, xmax, ymin, ymax, imin, imax, jmin, jmax, io, jo, go, found, dum, i, j, k, xo, yo, count, l1, l2, countim, MAJceil, MINceil, nnz, xt, yt, dp, p, w, Iter
 7677:     cdef float adotValmax, tmp, MIN, dr, theta, c, s, t, dt, red, green, blue
+7678:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7678, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7678, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+7679:     cdef np.ndarray[np.int_t, ndim = 1] a = np.ones(MN, dtype=np.int)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ones); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 7679, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7679, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7679, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+7680:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 7680, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7680, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7680, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+7681:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 7681, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7681, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7681, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+7682:     cdef np.ndarray[np.float64_t, ndim = 1] adotVal = np.zeros(MN, dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 7682, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7682, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_adotVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7682, __pyx_L1_error)
    } else {__pyx_pybuffernd_adotVal.diminfo[0].strides = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_adotVal.diminfo[0].shape = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_adotVal = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+7683:     cdef np.ndarray[np.int_t, ndim = 2] II = np.zeros((m, n), dtype=np.int)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7683, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_II.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_II = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_II.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7683, __pyx_L1_error)
    } else {__pyx_pybuffernd_II.diminfo[0].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_II.diminfo[0].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_II.diminfo[1].strides = __pyx_pybuffernd_II.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_II.diminfo[1].shape = __pyx_pybuffernd_II.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_II = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+7684:     cdef np.ndarray[np.float64_t, ndim = 1] MAJ = np.zeros(MN, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 7684, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7684, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7684, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+7685:     cdef np.ndarray[np.float64_t, ndim = 1] Rval = np.zeros(MN, dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 7685, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7685, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Rval = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7685, __pyx_L1_error)
    } else {__pyx_pybuffernd_Rval.diminfo[0].strides = __pyx_pybuffernd_Rval.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Rval.diminfo[0].shape = __pyx_pybuffernd_Rval.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Rval = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+7686:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 7686, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7686, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7686, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+7687:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 7687, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7687, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7687, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+7688:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7688, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7688, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_19 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+7689:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 7689, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7689, __pyx_L1_error)
  __pyx_t_20 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_20, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 7689, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_20 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+7690:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_7) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7690, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7690, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7690, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+7691:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7691, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7691, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7691, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7691, __pyx_L1_error)
  __pyx_t_20 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_20, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7691, __pyx_L1_error)
  }
  __pyx_t_20 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_1));
  __pyx_t_1 = 0;
+7692:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7692, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7692, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_24 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_24 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 7692, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tic = __pyx_t_24;
 7693: 
+7694:     countim = 1
  __pyx_v_countim = 1;
+7695:     count = 0
  __pyx_v_count = 0;
+7696:     nnz = 0
  __pyx_v_nnz = 0;
+7697:     t = 0
  __pyx_v_t = 0.0;
+7698:     p = 0
  __pyx_v_p = 0;
 7699: 
+7700:     Iter = 1
  __pyx_v_Iter = 1;
+7701:     while nnz < MN:
  while (1) {
    __pyx_t_25 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_25) break;
+7702:         f = nnz / MN
    __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_nnz / __pyx_v_MN)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7702, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_1);
    __pyx_t_1 = 0;
+7703:         dt = 1.0 / Gt(t)
    __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_6 = __pyx_v_Gt; __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7703, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7703, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7703, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_1, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7703, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 7703, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_dt = __pyx_t_3;
+7704:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_6 = __Pyx_PyInt_SubtractCObj(__pyx_int_1, __pyx_v_f, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_7 = __pyx_v_Ndot; __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7704, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      __pyx_t_26 = PyTuple_New(1+1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7704, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_26);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_26, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7704, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyNumber_Multiply(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7704, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_dp = __pyx_t_2;
+7705:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+7706:         if pdelNxy == []:
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7706, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7706, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_25 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_25 < 0)) __PYX_ERR(0, 7706, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_25) {
/* … */
      goto __pyx_L5;
    }
+7707:             if seq == 1 or seq == 3 or seq == 4:
      switch (__pyx_v_seq) {
        case 1:
        case 3:
        case 4:
/* … */
        break;
        default:
+7708:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L7_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L7_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L7_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+7709:                     count = 0
          __pyx_v_count = 0;
+7710:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+7711:                         xt = np.random.randint(0, m - 1)
            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7711, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7711, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_randint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7711, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7711, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_26 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_26)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_26);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_5 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7711, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_26) {
              __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_26); __pyx_t_26 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_7);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_t_7);
            __pyx_t_7 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7711, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7711, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_2;
+7712:                         yt = np.random.randint(0, n - 1)
            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7712, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7712, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_randint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7712, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7712, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_7 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_7)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_7);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_26 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7712, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            if (__pyx_t_7) {
              __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_7); __pyx_t_7 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7712, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7712, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_2;
+7713:                         if I[xt, yt] == 0:
            __pyx_t_2 = __pyx_v_xt;
            __pyx_t_29 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_29, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
+7714:                             I[xt, yt] = p + count + 1
              __pyx_t_30 = __pyx_v_xt;
              __pyx_t_31 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_31, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+7715:                             X[p + count] = xt
              __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+7716:                             Y[p + count] = yt
              __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+7717:                             a[p + count] = 1
              __pyx_t_34 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7718:                             MAJ[p + count] = 1
              __pyx_t_35 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+7719:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, 1, 0)
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_7 = __pyx_v_Rfunc; __pyx_t_8 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
                __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
                if (likely(__pyx_t_8)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                  __Pyx_INCREF(__pyx_t_8);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_7, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_36 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              if (__pyx_t_8) {
                __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_8); __pyx_t_8 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_36, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_36, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_36, 4+__pyx_t_28, __pyx_int_0);
              __pyx_t_1 = 0;
              __pyx_t_26 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7719, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_38 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+7720:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, Rval[p + count])
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7720, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7720, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7720, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_39 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_26 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7720, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_1 = __pyx_v_Adotfunc; __pyx_t_8 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_8)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_8);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_40 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7720, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              if (__pyx_t_8) {
                __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_8); __pyx_t_8 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_40, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_40, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_40, 4+__pyx_t_28, __pyx_t_26);
              __pyx_t_7 = 0;
              __pyx_t_36 = 0;
              __pyx_t_5 = 0;
              __pyx_t_26 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7720, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7720, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_41 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_41, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+7721:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_42 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_43 = 0;
              __pyx_t_44 = __pyx_v_xt;
              __pyx_t_45 = __pyx_v_yt;
              __pyx_t_46 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_43, __pyx_pybuffernd_col.diminfo[1].strides));
+7722:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_47 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_48 = 1;
              __pyx_t_49 = __pyx_v_xt;
              __pyx_t_50 = __pyx_v_yt;
              __pyx_t_51 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_51, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_48, __pyx_pybuffernd_col.diminfo[1].strides));
+7723:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_52 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_53 = 2;
              __pyx_t_54 = __pyx_v_xt;
              __pyx_t_55 = __pyx_v_yt;
              __pyx_t_56 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_54, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_55, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_56, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_52, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_53, __pyx_pybuffernd_col.diminfo[1].strides));
+7724:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+7725:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 7726:             else:
+7727:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L14_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L14_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L14_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
        break;
      }
+7728:                     count = 0
          __pyx_v_count = 0;
+7729:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+7730:                         xt = np.random.randint(0, m - 1)
            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_40);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_randint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
            __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_40);
            __pyx_t_26 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_26)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_26);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_5 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_26) {
              __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_26); __pyx_t_26 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_40);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_t_40);
            __pyx_t_40 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_57 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_57 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7730, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_57;
+7731:                         yt = np.random.randint(0, n - 1)
            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_randint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_40 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_40)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_40);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_26 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            if (__pyx_t_40) {
              __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_40); __pyx_t_40 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_57 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_57 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7731, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_57;
+7732:                         if I[xt, yt] == 0:
            __pyx_t_57 = __pyx_v_xt;
            __pyx_t_58 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_58, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
+7733:                             I[xt, yt] = p + count + 1
              __pyx_t_59 = __pyx_v_xt;
              __pyx_t_60 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_59, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_60, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+7734:                             X[p + count] = xt
              __pyx_t_61 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+7735:                             Y[p + count] = yt
              __pyx_t_62 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+7736:                             a[p + count] = 1
              __pyx_t_63 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7737:                             MAJ[p + count] = 1
              __pyx_t_64 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+7738:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, 1)
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7738, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7738, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7738, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_40 = __pyx_v_Adotfunc; __pyx_t_36 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_40))) {
                __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_40);
                if (likely(__pyx_t_36)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
                  __Pyx_INCREF(__pyx_t_36);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_40, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7738, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_36) {
                __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_36); __pyx_t_36 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_1 = 0;
              __pyx_t_26 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7738, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7738, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_65 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+7739:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, adotVal[p + count], 0)
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_66 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_26 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_1 = __pyx_v_Rfunc; __pyx_t_36 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_36)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_36);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_8 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (__pyx_t_36) {
                __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_36); __pyx_t_36 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_28, __pyx_t_26);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_28, __pyx_int_0);
              __pyx_t_40 = 0;
              __pyx_t_7 = 0;
              __pyx_t_5 = 0;
              __pyx_t_26 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7739, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_67 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+7740:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_68 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_69 = 0;
              __pyx_t_70 = __pyx_v_xt;
              __pyx_t_71 = __pyx_v_yt;
              __pyx_t_72 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_72, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_69, __pyx_pybuffernd_col.diminfo[1].strides));
+7741:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_73 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_74 = 1;
              __pyx_t_75 = __pyx_v_xt;
              __pyx_t_76 = __pyx_v_yt;
              __pyx_t_77 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_74, __pyx_pybuffernd_col.diminfo[1].strides));
+7742:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_78 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_79 = 2;
              __pyx_t_80 = __pyx_v_xt;
              __pyx_t_81 = __pyx_v_yt;
              __pyx_t_82 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_81, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_82, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_78, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_79, __pyx_pybuffernd_col.diminfo[1].strides));
+7743:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+7744:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 7745:         else:
+7746:             if seq == 1 or seq == 3 or seq == 4:
    /*else*/ {
      switch (__pyx_v_seq) {
        case 1:
        case 3:
        case 4:
/* … */
        break;
        default:
+7747:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L21_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L21_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L21_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+7748:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7748, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7748, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7748, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7748, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_26);
          __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7748, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = NULL;
          __pyx_t_28 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_7)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
              __pyx_t_28 = 1;
            }
          }
          __pyx_t_40 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7748, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_40);
          if (__pyx_t_7) {
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_7); __pyx_t_7 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_40, 2+__pyx_t_28, __pyx_t_1);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_40, 3+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_26);
          PyTuple_SET_ITEM(__pyx_t_40, 4+__pyx_t_28, __pyx_t_26);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_40, 5+__pyx_t_28, __pyx_t_5);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_40, 6+__pyx_t_28, __pyx_int_1);
          __pyx_t_1 = 0;
          __pyx_t_26 = 0;
          __pyx_t_5 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7748, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 7748, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_40 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_8 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_40 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(__pyx_t_40);
            #else
            __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7748, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_40 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7748, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_40);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7748, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_83 = Py_TYPE(__pyx_t_5)->tp_iternext;
            index = 0; __pyx_t_8 = __pyx_t_83(__pyx_t_5); if (unlikely(!__pyx_t_8)) goto __pyx_L24_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_8);
            index = 1; __pyx_t_40 = __pyx_t_83(__pyx_t_5); if (unlikely(!__pyx_t_40)) goto __pyx_L24_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_40);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_83(__pyx_t_5), 2) < 0) __PYX_ERR(0, 7748, __pyx_L1_error)
            __pyx_t_83 = NULL;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            goto __pyx_L25_unpacking_done;
            __pyx_L24_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_83 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 7748, __pyx_L1_error)
            __pyx_L25_unpacking_done:;
          }
          if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7748, __pyx_L1_error)
          if (!(likely(((__pyx_t_40) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_40, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7748, __pyx_L1_error)
          __pyx_t_17 = ((PyArrayObject *)__pyx_t_8);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7748, __pyx_L1_error)
          }
          __pyx_t_17 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_8));
          __pyx_t_8 = 0;
          __pyx_t_18 = ((PyArrayObject *)__pyx_t_40);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7748, __pyx_L1_error)
          }
          __pyx_t_18 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_40));
          __pyx_t_40 = 0;
+7749:                     w = 0
          __pyx_v_w = 0;
+7750:                     count = 0
          __pyx_v_count = 0;
+7751:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+7752:                         xt = xtrial[w]
            __pyx_t_84 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+7753:                         yt = ytrial[w]
            __pyx_t_85 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+7754:                         if I[xt, yt] == 0:
            __pyx_t_86 = __pyx_v_xt;
            __pyx_t_87 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_86, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_87, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
+7755:                             I[xt, yt] = p + count + 1
              __pyx_t_88 = __pyx_v_xt;
              __pyx_t_89 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_88, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_89, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+7756:                             X[p + count] = xt
              __pyx_t_90 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+7757:                             Y[p + count] = yt
              __pyx_t_91 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+7758:                             a[p + count] = 1
              __pyx_t_92 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7759:                             MAJ[p + count] = 1
              __pyx_t_93 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+7760:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, 1, 0)
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_26 = __pyx_v_Rfunc; __pyx_t_1 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_26);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_26, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_1) {
                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_28, __pyx_int_0);
              __pyx_t_40 = 0;
              __pyx_t_8 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7760, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_94 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+7761:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, Rval[p + count])
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_95 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_8 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_40 = __pyx_v_Adotfunc; __pyx_t_1 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_40))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_40);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_40, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_36 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              if (__pyx_t_1) {
                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_1); __pyx_t_1 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_36, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_36, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_36, 4+__pyx_t_28, __pyx_t_8);
              __pyx_t_26 = 0;
              __pyx_t_7 = 0;
              __pyx_t_5 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7761, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_96 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+7762:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_97 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_98 = 0;
              __pyx_t_99 = __pyx_v_xt;
              __pyx_t_100 = __pyx_v_yt;
              __pyx_t_101 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_101, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_98, __pyx_pybuffernd_col.diminfo[1].strides));
+7763:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_102 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_103 = 1;
              __pyx_t_104 = __pyx_v_xt;
              __pyx_t_105 = __pyx_v_yt;
              __pyx_t_106 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_105, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_106, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_103, __pyx_pybuffernd_col.diminfo[1].strides));
+7764:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_107 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_108 = 2;
              __pyx_t_109 = __pyx_v_xt;
              __pyx_t_110 = __pyx_v_yt;
              __pyx_t_111 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_col.diminfo[1].strides));
+7765:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+7766:                         if w < dp - 1:
            __pyx_t_25 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_25) {
/* … */
              goto __pyx_L29;
            }
+7767:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 7768:                         else:
+7769:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7769, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7769, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7769, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7769, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7769, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_7 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_36))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_36);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_36, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_26 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7769, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_26, 2+__pyx_t_28, __pyx_t_40);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_26, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_26, 4+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_26, 5+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_26, 6+__pyx_t_28, __pyx_int_1);
              __pyx_t_40 = 0;
              __pyx_t_8 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7769, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 7769, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_36 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_26 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_36 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_26 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_36);
                __Pyx_INCREF(__pyx_t_26);
                #else
                __pyx_t_36 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7769, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_36);
                __pyx_t_26 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7769, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_26);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7769, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_5);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_83 = Py_TYPE(__pyx_t_5)->tp_iternext;
                index = 0; __pyx_t_36 = __pyx_t_83(__pyx_t_5); if (unlikely(!__pyx_t_36)) goto __pyx_L30_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_36);
                index = 1; __pyx_t_26 = __pyx_t_83(__pyx_t_5); if (unlikely(!__pyx_t_26)) goto __pyx_L30_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_26);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_83(__pyx_t_5), 2) < 0) __PYX_ERR(0, 7769, __pyx_L1_error)
                __pyx_t_83 = NULL;
                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                goto __pyx_L31_unpacking_done;
                __pyx_L30_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                __pyx_t_83 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 7769, __pyx_L1_error)
                __pyx_L31_unpacking_done:;
              }
              if (!(likely(((__pyx_t_36) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_36, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7769, __pyx_L1_error)
              if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7769, __pyx_L1_error)
              __pyx_t_17 = ((PyArrayObject *)__pyx_t_36);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7769, __pyx_L1_error)
              }
              __pyx_t_17 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_36));
              __pyx_t_36 = 0;
              __pyx_t_18 = ((PyArrayObject *)__pyx_t_26);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7769, __pyx_L1_error)
              }
              __pyx_t_18 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_26));
              __pyx_t_26 = 0;
+7770:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L29:;
          }
+7771:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 7772:             else:
+7773:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L33_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L33_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L33_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
        break;
      }
    }
    __pyx_L5:;
+7774:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7774, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_26);
          __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_26, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7774, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_36);
          __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
          __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7774, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_26);
          __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7774, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7774, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_40 = NULL;
          __pyx_t_28 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_36))) {
            __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_36);
            if (likely(__pyx_t_40)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
              __Pyx_INCREF(__pyx_t_40);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_36, function);
              __pyx_t_28 = 1;
            }
          }
          __pyx_t_7 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7774, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (__pyx_t_40) {
            __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_40); __pyx_t_40 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_26);
          PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_28, __pyx_t_26);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_28, __pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_28, __pyx_t_8);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_28, __pyx_int_1);
          __pyx_t_26 = 0;
          __pyx_t_5 = 0;
          __pyx_t_8 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7774, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 7774, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_36 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_36 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_36);
            __Pyx_INCREF(__pyx_t_7);
            #else
            __pyx_t_36 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7774, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_36);
            __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7774, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7774, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_83 = Py_TYPE(__pyx_t_8)->tp_iternext;
            index = 0; __pyx_t_36 = __pyx_t_83(__pyx_t_8); if (unlikely(!__pyx_t_36)) goto __pyx_L36_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_36);
            index = 1; __pyx_t_7 = __pyx_t_83(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L36_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_7);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_83(__pyx_t_8), 2) < 0) __PYX_ERR(0, 7774, __pyx_L1_error)
            __pyx_t_83 = NULL;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            goto __pyx_L37_unpacking_done;
            __pyx_L36_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_83 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 7774, __pyx_L1_error)
            __pyx_L37_unpacking_done:;
          }
          if (!(likely(((__pyx_t_36) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_36, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7774, __pyx_L1_error)
          if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7774, __pyx_L1_error)
          __pyx_t_17 = ((PyArrayObject *)__pyx_t_36);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7774, __pyx_L1_error)
          }
          __pyx_t_17 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_36));
          __pyx_t_36 = 0;
          __pyx_t_18 = ((PyArrayObject *)__pyx_t_7);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7774, __pyx_L1_error)
          }
          __pyx_t_18 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_7));
          __pyx_t_7 = 0;
+7775:                     w = 0
          __pyx_v_w = 0;
+7776:                     count = 0
          __pyx_v_count = 0;
+7777:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+7778:                         xt = xtrial[w]
            __pyx_t_112 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+7779:                         yt = ytrial[w]
            __pyx_t_113 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+7780:                         if I[xt, yt] == 0:
            __pyx_t_114 = __pyx_v_xt;
            __pyx_t_115 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_115, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
+7781:                             I[xt, yt] = p + count + 1
              __pyx_t_116 = __pyx_v_xt;
              __pyx_t_117 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_116, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_117, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+7782:                             X[p + count] = xt
              __pyx_t_118 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+7783:                             Y[p + count] = yt
              __pyx_t_119 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+7784:                             a[p + count] = 1
              __pyx_t_120 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7785:                             MAJ[p + count] = 1
              __pyx_t_121 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+7786:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, 1)
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7786, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7786, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7786, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_5 = __pyx_v_Adotfunc; __pyx_t_26 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_26)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_26);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_40 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7786, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              if (__pyx_t_26) {
                __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_26); __pyx_t_26 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_40, 2+__pyx_t_28, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_40, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_40, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_7 = 0;
              __pyx_t_36 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7786, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7786, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_122 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+7787:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, adotVal[p + count], 0)
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7787, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 7787, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7787, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_123 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_36 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7787, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_7 = __pyx_v_Rfunc; __pyx_t_26 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
                __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_7);
                if (likely(__pyx_t_26)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                  __Pyx_INCREF(__pyx_t_26);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_7, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_1 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7787, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__pyx_t_26) {
                __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_26); __pyx_t_26 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_28, __pyx_t_36);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_28, __pyx_int_0);
              __pyx_t_5 = 0;
              __pyx_t_40 = 0;
              __pyx_t_8 = 0;
              __pyx_t_36 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7787, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 7787, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_124 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+7788:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_125 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_126 = 0;
              __pyx_t_127 = __pyx_v_xt;
              __pyx_t_128 = __pyx_v_yt;
              __pyx_t_129 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_129, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_125, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_126, __pyx_pybuffernd_col.diminfo[1].strides));
+7789:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_130 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_131 = 1;
              __pyx_t_132 = __pyx_v_xt;
              __pyx_t_133 = __pyx_v_yt;
              __pyx_t_134 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_134, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_131, __pyx_pybuffernd_col.diminfo[1].strides));
+7790:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_135 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_136 = 2;
              __pyx_t_137 = __pyx_v_xt;
              __pyx_t_138 = __pyx_v_yt;
              __pyx_t_139 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_139, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_col.diminfo[1].strides));
+7791:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+7792:                         if w < dp - 1:
            __pyx_t_25 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_25) {
/* … */
              goto __pyx_L41;
            }
+7793:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 7794:                         else:
+7795:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7795, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7795, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7795, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7795, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7795, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_5 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7795, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_28, __pyx_t_7);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_28, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_28, __pyx_int_1);
              __pyx_t_7 = 0;
              __pyx_t_36 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7795, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 7795, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_5);
                #else
                __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7795, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_1);
                __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7795, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_5);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7795, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_8);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_83 = Py_TYPE(__pyx_t_8)->tp_iternext;
                index = 0; __pyx_t_1 = __pyx_t_83(__pyx_t_8); if (unlikely(!__pyx_t_1)) goto __pyx_L42_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_1);
                index = 1; __pyx_t_5 = __pyx_t_83(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L42_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_5);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_83(__pyx_t_8), 2) < 0) __PYX_ERR(0, 7795, __pyx_L1_error)
                __pyx_t_83 = NULL;
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                goto __pyx_L43_unpacking_done;
                __pyx_L42_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __pyx_t_83 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 7795, __pyx_L1_error)
                __pyx_L43_unpacking_done:;
              }
              if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7795, __pyx_L1_error)
              if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 7795, __pyx_L1_error)
              __pyx_t_17 = ((PyArrayObject *)__pyx_t_1);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7795, __pyx_L1_error)
              }
              __pyx_t_17 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_1));
              __pyx_t_1 = 0;
              __pyx_t_18 = ((PyArrayObject *)__pyx_t_5);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 7795, __pyx_L1_error)
              }
              __pyx_t_18 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_5));
              __pyx_t_5 = 0;
+7796:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L41:;
          }
+7797:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 7798: 
 7799: 
 7800: 
+7801:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+7802:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 7803: 
+7804:         adotValmax = 0
    __pyx_v_adotValmax = 0.0;
+7805:         for i in range(0, p):
    __pyx_t_140 = __pyx_v_p;
    for (__pyx_t_141 = 0; __pyx_t_141 < __pyx_t_140; __pyx_t_141+=1) {
      __pyx_v_i = __pyx_t_141;
+7806:             if a[i] == 1:
      __pyx_t_142 = __pyx_v_i;
      __pyx_t_25 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_25) {
/* … */
      }
    }
+7807:                 tmp = adotVal[i]
        __pyx_t_143 = __pyx_v_i;
        __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_adotVal.diminfo[0].strides));
+7808:                 if tmp > adotValmax:
        __pyx_t_25 = ((__pyx_v_tmp > __pyx_v_adotValmax) != 0);
        if (__pyx_t_25) {
/* … */
        }
+7809:                     adotValmax = tmp
          __pyx_v_adotValmax = __pyx_v_tmp;
 7810: 
+7811:         for k in range(0, p):
    __pyx_t_140 = __pyx_v_p;
    for (__pyx_t_141 = 0; __pyx_t_141 < __pyx_t_140; __pyx_t_141+=1) {
      __pyx_v_k = __pyx_t_141;
+7812:             if a[k] == 1:
      __pyx_t_144 = __pyx_v_k;
      __pyx_t_25 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_144, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_25) {
/* … */
      }
    }
+7813:                 a[k] = 0
        __pyx_t_145 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+7814:                 xo = X[k]
        __pyx_t_146 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_X.diminfo[0].strides));
+7815:                 yo = Y[k]
        __pyx_t_147 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_Y.diminfo[0].strides));
+7816:                 Io = I[xo, yo]
        __pyx_t_148 = __pyx_v_xo;
        __pyx_t_149 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_149, __pyx_pybuffernd_I.diminfo[1].strides));
 7817: 
+7818:                 dr = adotVal[k] / adotValmax
        __pyx_t_150 = __pyx_v_k;
        __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_adotVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_adotValmax));
+7819:                 MAJ[k] = MAJ[k] + dr
        __pyx_t_151 = __pyx_v_k;
        __pyx_t_152 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_152, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + __pyx_v_dr);
+7820:                 MIN = MAJ[k] / Rval[k]
        __pyx_t_153 = __pyx_v_k;
        __pyx_t_154 = __pyx_v_k;
        __pyx_v_MIN = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_MAJ.diminfo[0].strides)) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_Rval.diminfo[0].strides)));
+7821:                 MAJceil = math.ceil(MAJ[k])
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7821, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ceil); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7821, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_155 = __pyx_v_k;
        __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_MAJ.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7821, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7821, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_36 = PyTuple_New(1+1); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7821, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_36);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_36, 0+1, __pyx_t_5);
          __pyx_t_5 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7821, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_156 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_156 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7821, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_v_MAJceil = __pyx_t_156;
+7822:                 MINceil = math.ceil(MIN)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7822, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ceil); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7822, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_36);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyFloat_FromDouble(__pyx_v_MIN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7822, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_36))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_36);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_36, function);
          }
        }
        if (!__pyx_t_5) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_36, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7822, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7822, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7822, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
        __pyx_t_156 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_156 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 7822, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_v_MINceil = __pyx_t_156;
+7823:                 red = col[k, 0]
        __pyx_t_156 = __pyx_v_k;
        __pyx_t_157 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_157, __pyx_pybuffernd_col.diminfo[1].strides));
+7824:                 green = col[k, 1]
        __pyx_t_158 = __pyx_v_k;
        __pyx_t_159 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_158, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_159, __pyx_pybuffernd_col.diminfo[1].strides));
+7825:                 blue = col[k, 2]
        __pyx_t_160 = __pyx_v_k;
        __pyx_t_161 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_161, __pyx_pybuffernd_col.diminfo[1].strides));
 7826: 
+7827:                 imin, imax, jmin, jmax = xo, xo, yo, yo
        __pyx_t_162 = __pyx_v_xo;
        __pyx_t_163 = __pyx_v_xo;
        __pyx_t_164 = __pyx_v_yo;
        __pyx_t_165 = __pyx_v_yo;
        __pyx_v_imin = __pyx_t_162;
        __pyx_v_imax = __pyx_t_163;
        __pyx_v_jmin = __pyx_t_164;
        __pyx_v_jmax = __pyx_t_165;
 7828: 
+7829:                 for deli in range(0, MAJceil + 1):
        __pyx_t_165 = (__pyx_v_MAJceil + 1);
        for (__pyx_t_164 = 0; __pyx_t_164 < __pyx_t_165; __pyx_t_164+=1) {
          __pyx_v_deli = __pyx_t_164;
+7830:                     for delj in range(0, MINceil + 1):
          __pyx_t_163 = (__pyx_v_MINceil + 1);
          for (__pyx_t_162 = 0; __pyx_t_162 < __pyx_t_163; __pyx_t_162+=1) {
            __pyx_v_delj = __pyx_t_162;
+7831:                         if (deli / MAJ[k]) ** 2 + (delj / MIN) ** 2 <= 1:
            __pyx_t_166 = __pyx_v_k;
            __pyx_t_25 = (((pow((((__pyx_t_5numpy_float64_t)__pyx_v_deli) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_166, __pyx_pybuffernd_MAJ.diminfo[0].strides))), 2.0) + powf((((float)__pyx_v_delj) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
        }
+7832:                             for l1 in range(-1, 2, 2):
              for (__pyx_t_167 = -1L; __pyx_t_167 < 2; __pyx_t_167+=2) {
                __pyx_v_l1 = __pyx_t_167;
+7833:                                 for l2 in range(-1, 2, 2):
                for (__pyx_t_168 = -1L; __pyx_t_168 < 2; __pyx_t_168+=2) {
                  __pyx_v_l2 = __pyx_t_168;
+7834:                                     i, j = xo + l1 * deli, yo + l2 * delj
                  __pyx_t_169 = (__pyx_v_xo + (__pyx_v_l1 * __pyx_v_deli));
                  __pyx_t_170 = (__pyx_v_yo + (__pyx_v_l2 * __pyx_v_delj));
                  __pyx_v_i = __pyx_t_169;
                  __pyx_v_j = __pyx_t_170;
+7835:                                     if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                  __pyx_t_27 = (0 <= __pyx_v_i);
                  if (__pyx_t_27) {
                    __pyx_t_27 = (__pyx_v_i <= (__pyx_v_m - 1));
                  }
                  __pyx_t_171 = (__pyx_t_27 != 0);
                  if (__pyx_t_171) {
                  } else {
                    __pyx_t_25 = __pyx_t_171;
                    goto __pyx_L61_bool_binop_done;
                  }
                  __pyx_t_171 = (0 <= __pyx_v_j);
                  if (__pyx_t_171) {
                    __pyx_t_171 = (__pyx_v_j <= (__pyx_v_n - 1));
                  }
                  __pyx_t_27 = (__pyx_t_171 != 0);
                  __pyx_t_25 = __pyx_t_27;
                  __pyx_L61_bool_binop_done:;
                  if (__pyx_t_25) {
/* … */
                  }
                }
              }
+7836:                                         if I[i, j] == 0:
                    __pyx_t_170 = __pyx_v_i;
                    __pyx_t_169 = __pyx_v_j;
                    __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7837:                                             II[i, j] = Io
                      __pyx_t_172 = __pyx_v_i;
                      __pyx_t_173 = __pyx_v_j;
                      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_172, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_173, __pyx_pybuffernd_II.diminfo[1].strides) = __pyx_v_Io;
+7838:                                             count = count + 1
                      __pyx_v_count = (__pyx_v_count + 1);
+7839:                                             if i > imax:
                      __pyx_t_25 = ((__pyx_v_i > __pyx_v_imax) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7840:                                                 imax = i
                        __pyx_v_imax = __pyx_v_i;
+7841:                                             if i < imin:
                      __pyx_t_25 = ((__pyx_v_i < __pyx_v_imin) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7842:                                                 imin = i
                        __pyx_v_imin = __pyx_v_i;
+7843:                                             if j > jmax:
                      __pyx_t_25 = ((__pyx_v_j > __pyx_v_jmax) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7844:                                                 jmax = j
                        __pyx_v_jmax = __pyx_v_j;
+7845:                                             if j < jmin:
                      __pyx_t_25 = ((__pyx_v_j < __pyx_v_jmin) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7846:                                                 jmin = j
                        __pyx_v_jmin = __pyx_v_j;
 7847: 
+7848:                 if count > 0:
        __pyx_t_25 = ((__pyx_v_count > 0) != 0);
        if (__pyx_t_25) {
/* … */
        }
+7849:                     i = imin
          __pyx_v_i = __pyx_v_imin;
+7850:                     go = 1
          __pyx_v_go = 1;
+7851:                     found = 0
          __pyx_v_found = 0;
+7852:                     while go is True:
          while (1) {
            __pyx_t_25 = ((__pyx_v_go == 1) != 0);
            if (!__pyx_t_25) break;
+7853:                         for j in range(jmin, jmax + 1, 1):
            __pyx_t_165 = (__pyx_v_jmax + 1);
            for (__pyx_t_164 = __pyx_v_jmin; __pyx_t_164 < __pyx_t_165; __pyx_t_164+=1) {
              __pyx_v_j = __pyx_t_164;
+7854:                             if II[i, j] == Io:
              __pyx_t_163 = __pyx_v_i;
              __pyx_t_162 = __pyx_v_j;
              __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_163, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_162, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
              if (__pyx_t_25) {
/* … */
              }
            }
            __pyx_L72_break:;
+7855:                                 if i > 0:
                __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                if (__pyx_t_25) {
/* … */
                }
+7856:                                     if  I[i - 1, j] == Io:
                  __pyx_t_167 = (__pyx_v_i - 1);
                  __pyx_t_168 = __pyx_v_j;
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_167, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_168, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
+7857:                                         io, jo = i, j
                    __pyx_t_174 = __pyx_v_i;
                    __pyx_t_175 = __pyx_v_j;
                    __pyx_v_io = __pyx_t_174;
                    __pyx_v_jo = __pyx_t_175;
+7858:                                         go = 0
                    __pyx_v_go = 0;
+7859:                                         found = 1
                    __pyx_v_found = 1;
+7860:                                         break
                    goto __pyx_L72_break;
+7861:                                 if j > 0:
                __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                if (__pyx_t_25) {
/* … */
                }
+7862:                                     if I[i, j - 1] == Io:
                  __pyx_t_175 = __pyx_v_i;
                  __pyx_t_174 = (__pyx_v_j - 1);
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_174, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
+7863:                                         io, jo = i, j
                    __pyx_t_176 = __pyx_v_i;
                    __pyx_t_177 = __pyx_v_j;
                    __pyx_v_io = __pyx_t_176;
                    __pyx_v_jo = __pyx_t_177;
+7864:                                         go = 0
                    __pyx_v_go = 0;
+7865:                                         found = 1
                    __pyx_v_found = 1;
+7866:                                         break
                    goto __pyx_L72_break;
 7867: 
+7868:                                 if j < n - 1:
                __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                if (__pyx_t_25) {
/* … */
                }
+7869:                                     if I[i, j + 1] == Io:
                  __pyx_t_177 = __pyx_v_i;
                  __pyx_t_176 = (__pyx_v_j + 1);
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_176, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
+7870:                                         io, jo = i, j
                    __pyx_t_178 = __pyx_v_i;
                    __pyx_t_179 = __pyx_v_j;
                    __pyx_v_io = __pyx_t_178;
                    __pyx_v_jo = __pyx_t_179;
+7871:                                         go = 0
                    __pyx_v_go = 0;
+7872:                                         found = 1
                    __pyx_v_found = 1;
+7873:                                         break
                    goto __pyx_L72_break;
 7874: 
 7875: 
+7876:                                 if i < m - 1:
                __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                if (__pyx_t_25) {
/* … */
                }
+7877:                                     if  I[i + 1, j] == Io:
                  __pyx_t_179 = (__pyx_v_i + 1);
                  __pyx_t_178 = __pyx_v_j;
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_178, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
+7878:                                         io, jo = i, j
                    __pyx_t_180 = __pyx_v_i;
                    __pyx_t_181 = __pyx_v_j;
                    __pyx_v_io = __pyx_t_180;
                    __pyx_v_jo = __pyx_t_181;
+7879:                                         go = 0
                    __pyx_v_go = 0;
+7880:                                         found = 1
                    __pyx_v_found = 1;
+7881:                                         break
                    goto __pyx_L72_break;
+7882:                         i = i + 1
            __pyx_v_i = (__pyx_v_i + 1);
+7883:                         if i == imax + 1:
            __pyx_t_25 = ((__pyx_v_i == (__pyx_v_imax + 1)) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
+7884:                             go = 0
              __pyx_v_go = 0;
 7885: 
+7886:                     if found == 1:
          __pyx_t_25 = ((__pyx_v_found == 1) != 0);
          if (__pyx_t_25) {
/* … */
          }
 7887: 
 7888:                         # OUTWARD
+7889:                         for i in range(io, imax + 1):
            __pyx_t_165 = (__pyx_v_imax + 1);
            for (__pyx_t_164 = __pyx_v_io; __pyx_t_164 < __pyx_t_165; __pyx_t_164+=1) {
              __pyx_v_i = __pyx_t_164;
+7890:                             for j in range(jo, jmax + 1):
              __pyx_t_181 = (__pyx_v_jmax + 1);
              for (__pyx_t_180 = __pyx_v_jo; __pyx_t_180 < __pyx_t_181; __pyx_t_180+=1) {
                __pyx_v_j = __pyx_t_180;
+7891:                                 for dum in range(1):
                for (__pyx_t_182 = 0; __pyx_t_182 < 1; __pyx_t_182+=1) {
                  __pyx_v_dum = __pyx_t_182;
+7892:                                     if II[i, j] == Io:
                  __pyx_t_183 = __pyx_v_i;
                  __pyx_t_184 = __pyx_v_j;
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_183, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_184, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
                }
                __pyx_L89_break:;
              }
+7893:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7894:                                             if  I[i - 1, j] == Io:
                      __pyx_t_185 = (__pyx_v_i - 1);
                      __pyx_t_186 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_185, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_186, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7895:                                                 I[i, j] = Io
                        __pyx_t_187 = __pyx_v_i;
                        __pyx_t_188 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_188, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7896:                                                 Col[i, j, 2] = red
                        __pyx_t_189 = __pyx_v_i;
                        __pyx_t_190 = __pyx_v_j;
                        __pyx_t_191 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_190, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_191, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7897:                                                 Col[i, j, 1] = green
                        __pyx_t_192 = __pyx_v_i;
                        __pyx_t_193 = __pyx_v_j;
                        __pyx_t_194 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_192, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_193, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_194, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7898:                                                 Col[i, j, 0] = blue
                        __pyx_t_195 = __pyx_v_i;
                        __pyx_t_196 = __pyx_v_j;
                        __pyx_t_197 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_195, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_196, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_197, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7899:                                                 a[k] = 1
                        __pyx_t_198 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7900:                                                 break
                        goto __pyx_L89_break;
+7901:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7902:                                             if I[i, j - 1] == Io:
                      __pyx_t_199 = __pyx_v_i;
                      __pyx_t_200 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_199, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_200, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7903:                                                 I[i, j] = Io
                        __pyx_t_201 = __pyx_v_i;
                        __pyx_t_202 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_201, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_202, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7904:                                                 Col[i, j, 2] = red
                        __pyx_t_203 = __pyx_v_i;
                        __pyx_t_204 = __pyx_v_j;
                        __pyx_t_205 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_204, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_205, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7905:                                                 Col[i, j, 1] = green
                        __pyx_t_206 = __pyx_v_i;
                        __pyx_t_207 = __pyx_v_j;
                        __pyx_t_208 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_206, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_207, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_208, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7906:                                                 Col[i, j, 0] = blue
                        __pyx_t_209 = __pyx_v_i;
                        __pyx_t_210 = __pyx_v_j;
                        __pyx_t_211 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_209, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_210, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_211, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7907:                                                 a[k] = 1
                        __pyx_t_212 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_212, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7908:                                                 break
                        goto __pyx_L89_break;
 7909: 
+7910:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7911:                                             if I[i, j + 1] == Io:
                      __pyx_t_213 = __pyx_v_i;
                      __pyx_t_214 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_213, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_214, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7912:                                                 I[i, j] = Io
                        __pyx_t_215 = __pyx_v_i;
                        __pyx_t_216 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_215, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_216, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7913:                                                 Col[i, j, 2] = red
                        __pyx_t_217 = __pyx_v_i;
                        __pyx_t_218 = __pyx_v_j;
                        __pyx_t_219 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_217, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_218, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_219, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7914:                                                 Col[i, j, 1] = green
                        __pyx_t_220 = __pyx_v_i;
                        __pyx_t_221 = __pyx_v_j;
                        __pyx_t_222 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_220, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_221, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_222, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7915:                                                 Col[i, j, 0] = blue
                        __pyx_t_223 = __pyx_v_i;
                        __pyx_t_224 = __pyx_v_j;
                        __pyx_t_225 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_223, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_224, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_225, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7916:                                                 a[k] = 1
                        __pyx_t_226 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_226, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7917:                                                 break
                        goto __pyx_L89_break;
 7918: 
 7919: 
+7920:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7921:                                             if  I[i + 1, j] == Io:
                      __pyx_t_227 = (__pyx_v_i + 1);
                      __pyx_t_228 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_227, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_228, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7922:                                                 I[i, j] = Io
                        __pyx_t_229 = __pyx_v_i;
                        __pyx_t_230 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_229, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_230, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7923:                                                 Col[i, j, 2] = red
                        __pyx_t_231 = __pyx_v_i;
                        __pyx_t_232 = __pyx_v_j;
                        __pyx_t_233 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_232, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_233, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7924:                                                 Col[i, j, 1] = green
                        __pyx_t_234 = __pyx_v_i;
                        __pyx_t_235 = __pyx_v_j;
                        __pyx_t_236 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_234, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_235, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_236, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7925:                                                 Col[i, j, 0] = blue
                        __pyx_t_237 = __pyx_v_i;
                        __pyx_t_238 = __pyx_v_j;
                        __pyx_t_239 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_237, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_238, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_239, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7926:                                                 a[k] = 1
                        __pyx_t_240 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_240, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7927:                                                 break
                        goto __pyx_L89_break;
 7928: 
+7929:                             for j in range(jo - 1, jmin - 1, -1):
              __pyx_t_181 = (__pyx_v_jmin - 1);
              for (__pyx_t_180 = (__pyx_v_jo - 1); __pyx_t_180 > __pyx_t_181; __pyx_t_180-=1) {
                __pyx_v_j = __pyx_t_180;
+7930:                                 for dum in range(1):
                for (__pyx_t_182 = 0; __pyx_t_182 < 1; __pyx_t_182+=1) {
                  __pyx_v_dum = __pyx_t_182;
+7931:                                     if II[i, j] == Io:
                  __pyx_t_241 = __pyx_v_i;
                  __pyx_t_242 = __pyx_v_j;
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_241, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_242, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
                }
                __pyx_L102_break:;
              }
            }
+7932:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7933:                                             if  I[i - 1, j] == Io:
                      __pyx_t_243 = (__pyx_v_i - 1);
                      __pyx_t_244 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_243, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_244, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7934:                                                 I[i, j] = Io
                        __pyx_t_245 = __pyx_v_i;
                        __pyx_t_246 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_245, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_246, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7935:                                                 Col[i, j, 2] = red
                        __pyx_t_247 = __pyx_v_i;
                        __pyx_t_248 = __pyx_v_j;
                        __pyx_t_249 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_247, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_248, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_249, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7936:                                                 Col[i, j, 1] = green
                        __pyx_t_250 = __pyx_v_i;
                        __pyx_t_251 = __pyx_v_j;
                        __pyx_t_252 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_250, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_251, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_252, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7937:                                                 Col[i, j, 0] = blue
                        __pyx_t_253 = __pyx_v_i;
                        __pyx_t_254 = __pyx_v_j;
                        __pyx_t_255 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_253, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_254, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_255, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7938:                                                 a[k] = 1
                        __pyx_t_256 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_256, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7939:                                                 break
                        goto __pyx_L102_break;
+7940:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7941:                                             if I[i, j - 1] == Io:
                      __pyx_t_257 = __pyx_v_i;
                      __pyx_t_258 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_257, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_258, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7942:                                                 I[i, j] = Io
                        __pyx_t_259 = __pyx_v_i;
                        __pyx_t_260 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_259, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_260, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7943:                                                 Col[i, j, 2] = red
                        __pyx_t_261 = __pyx_v_i;
                        __pyx_t_262 = __pyx_v_j;
                        __pyx_t_263 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_261, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_262, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_263, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7944:                                                 Col[i, j, 1] = green
                        __pyx_t_264 = __pyx_v_i;
                        __pyx_t_265 = __pyx_v_j;
                        __pyx_t_266 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_264, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_265, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_266, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7945:                                                 Col[i, j, 0] = blue
                        __pyx_t_267 = __pyx_v_i;
                        __pyx_t_268 = __pyx_v_j;
                        __pyx_t_269 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_267, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_268, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_269, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7946:                                                 a[k] = 1
                        __pyx_t_270 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_270, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7947:                                                 break
                        goto __pyx_L102_break;
 7948: 
+7949:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7950:                                             if I[i, j + 1] == Io:
                      __pyx_t_271 = __pyx_v_i;
                      __pyx_t_272 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_271, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_272, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7951:                                                 I[i, j] = Io
                        __pyx_t_273 = __pyx_v_i;
                        __pyx_t_274 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_273, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_274, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7952:                                                 Col[i, j, 2] = red
                        __pyx_t_275 = __pyx_v_i;
                        __pyx_t_276 = __pyx_v_j;
                        __pyx_t_277 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_275, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_276, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_277, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7953:                                                 Col[i, j, 1] = green
                        __pyx_t_278 = __pyx_v_i;
                        __pyx_t_279 = __pyx_v_j;
                        __pyx_t_280 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_278, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_279, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_280, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7954:                                                 Col[i, j, 0] = blue
                        __pyx_t_281 = __pyx_v_i;
                        __pyx_t_282 = __pyx_v_j;
                        __pyx_t_283 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_281, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_282, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_283, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7955:                                                 a[k] = 1
                        __pyx_t_284 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7956:                                                 break
                        goto __pyx_L102_break;
 7957: 
 7958: 
+7959:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7960:                                             if  I[i + 1, j] == Io:
                      __pyx_t_285 = (__pyx_v_i + 1);
                      __pyx_t_286 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_285, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_286, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7961:                                                 I[i, j] = Io
                        __pyx_t_287 = __pyx_v_i;
                        __pyx_t_288 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_287, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_288, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7962:                                                 Col[i, j, 2] = red
                        __pyx_t_289 = __pyx_v_i;
                        __pyx_t_290 = __pyx_v_j;
                        __pyx_t_291 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_289, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_290, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_291, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7963:                                                 Col[i, j, 1] = green
                        __pyx_t_292 = __pyx_v_i;
                        __pyx_t_293 = __pyx_v_j;
                        __pyx_t_294 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_292, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_293, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_294, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7964:                                                 Col[i, j, 0] = blue
                        __pyx_t_295 = __pyx_v_i;
                        __pyx_t_296 = __pyx_v_j;
                        __pyx_t_297 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_295, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_296, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_297, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7965:                                                 a[k] = 1
                        __pyx_t_298 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_298, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7966:                                                 break
                        goto __pyx_L102_break;
 7967: 
 7968: 
 7969: 
+7970:                         for i in range(io - 1, imin - 1, -1):
            __pyx_t_165 = (__pyx_v_imin - 1);
            for (__pyx_t_164 = (__pyx_v_io - 1); __pyx_t_164 > __pyx_t_165; __pyx_t_164-=1) {
              __pyx_v_i = __pyx_t_164;
+7971:                             for j in range(jo, jmax + 1):
              __pyx_t_181 = (__pyx_v_jmax + 1);
              for (__pyx_t_180 = __pyx_v_jo; __pyx_t_180 < __pyx_t_181; __pyx_t_180+=1) {
                __pyx_v_j = __pyx_t_180;
+7972:                                 for dum in range(1):
                for (__pyx_t_182 = 0; __pyx_t_182 < 1; __pyx_t_182+=1) {
                  __pyx_v_dum = __pyx_t_182;
+7973:                                     if II[i, j] == Io:
                  __pyx_t_299 = __pyx_v_i;
                  __pyx_t_300 = __pyx_v_j;
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_299, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_300, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
                }
                __pyx_L117_break:;
              }
+7974:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7975:                                             if  I[i - 1, j] == Io:
                      __pyx_t_301 = (__pyx_v_i - 1);
                      __pyx_t_302 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_301, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_302, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7976:                                                 I[i, j] = Io
                        __pyx_t_303 = __pyx_v_i;
                        __pyx_t_304 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_303, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_304, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7977:                                                 Col[i, j, 2] = red
                        __pyx_t_305 = __pyx_v_i;
                        __pyx_t_306 = __pyx_v_j;
                        __pyx_t_307 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_305, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_306, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_307, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7978:                                                 Col[i, j, 1] = green
                        __pyx_t_308 = __pyx_v_i;
                        __pyx_t_309 = __pyx_v_j;
                        __pyx_t_310 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_308, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_309, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_310, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7979:                                                 Col[i, j, 0] = blue
                        __pyx_t_311 = __pyx_v_i;
                        __pyx_t_312 = __pyx_v_j;
                        __pyx_t_313 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_311, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_312, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_313, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7980:                                                 a[k] = 1
                        __pyx_t_314 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_314, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7981:                                                 break
                        goto __pyx_L117_break;
+7982:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7983:                                             if I[i, j - 1] == Io:
                      __pyx_t_315 = __pyx_v_i;
                      __pyx_t_316 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_315, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_316, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7984:                                                 I[i, j] = Io
                        __pyx_t_317 = __pyx_v_i;
                        __pyx_t_318 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_317, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_318, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7985:                                                 Col[i, j, 2] = red
                        __pyx_t_319 = __pyx_v_i;
                        __pyx_t_320 = __pyx_v_j;
                        __pyx_t_321 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_319, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_320, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_321, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7986:                                                 Col[i, j, 1] = green
                        __pyx_t_322 = __pyx_v_i;
                        __pyx_t_323 = __pyx_v_j;
                        __pyx_t_324 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_322, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_323, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_324, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7987:                                                 Col[i, j, 0] = blue
                        __pyx_t_325 = __pyx_v_i;
                        __pyx_t_326 = __pyx_v_j;
                        __pyx_t_327 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_325, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_326, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_327, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7988:                                                 a[k] = 1
                        __pyx_t_328 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_328, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7989:                                                 break
                        goto __pyx_L117_break;
 7990: 
+7991:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+7992:                                             if I[i, j + 1] == Io:
                      __pyx_t_329 = __pyx_v_i;
                      __pyx_t_330 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_329, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_330, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+7993:                                                 I[i, j] = Io
                        __pyx_t_331 = __pyx_v_i;
                        __pyx_t_332 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_331, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_332, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+7994:                                                 Col[i, j, 2] = red
                        __pyx_t_333 = __pyx_v_i;
                        __pyx_t_334 = __pyx_v_j;
                        __pyx_t_335 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_333, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_334, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_335, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+7995:                                                 Col[i, j, 1] = green
                        __pyx_t_336 = __pyx_v_i;
                        __pyx_t_337 = __pyx_v_j;
                        __pyx_t_338 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_336, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_337, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_338, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+7996:                                                 Col[i, j, 0] = blue
                        __pyx_t_339 = __pyx_v_i;
                        __pyx_t_340 = __pyx_v_j;
                        __pyx_t_341 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_339, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_340, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_341, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+7997:                                                 a[k] = 1
                        __pyx_t_342 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_342, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+7998:                                                 break
                        goto __pyx_L117_break;
 7999: 
 8000: 
+8001:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8002:                                             if  I[i + 1, j] == Io:
                      __pyx_t_343 = (__pyx_v_i + 1);
                      __pyx_t_344 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_343, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_344, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8003:                                                 I[i, j] = Io
                        __pyx_t_345 = __pyx_v_i;
                        __pyx_t_346 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_345, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_346, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8004:                                                 Col[i, j, 2] = red
                        __pyx_t_347 = __pyx_v_i;
                        __pyx_t_348 = __pyx_v_j;
                        __pyx_t_349 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_347, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_348, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_349, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8005:                                                 Col[i, j, 1] = green
                        __pyx_t_350 = __pyx_v_i;
                        __pyx_t_351 = __pyx_v_j;
                        __pyx_t_352 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_350, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_351, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_352, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8006:                                                 Col[i, j, 0] = blue
                        __pyx_t_353 = __pyx_v_i;
                        __pyx_t_354 = __pyx_v_j;
                        __pyx_t_355 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_353, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_354, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_355, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8007:                                                 a[k] = 1
                        __pyx_t_356 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_356, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8008:                                                 break
                        goto __pyx_L117_break;
 8009: 
+8010:                             for j in range(jo - 1, jmin - 1, -1):
              __pyx_t_181 = (__pyx_v_jmin - 1);
              for (__pyx_t_180 = (__pyx_v_jo - 1); __pyx_t_180 > __pyx_t_181; __pyx_t_180-=1) {
                __pyx_v_j = __pyx_t_180;
+8011:                                 for dum in range(1):
                for (__pyx_t_182 = 0; __pyx_t_182 < 1; __pyx_t_182+=1) {
                  __pyx_v_dum = __pyx_t_182;
+8012:                                     if II[i, j] == Io:
                  __pyx_t_357 = __pyx_v_i;
                  __pyx_t_358 = __pyx_v_j;
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_357, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_358, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
                }
                __pyx_L130_break:;
              }
            }
+8013:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8014:                                             if  I[i - 1, j] == Io:
                      __pyx_t_359 = (__pyx_v_i - 1);
                      __pyx_t_360 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_359, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_360, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8015:                                                 I[i, j] = Io
                        __pyx_t_361 = __pyx_v_i;
                        __pyx_t_362 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_361, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_362, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8016:                                                 Col[i, j, 2] = red
                        __pyx_t_363 = __pyx_v_i;
                        __pyx_t_364 = __pyx_v_j;
                        __pyx_t_365 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_363, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_364, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_365, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8017:                                                 Col[i, j, 1] = green
                        __pyx_t_366 = __pyx_v_i;
                        __pyx_t_367 = __pyx_v_j;
                        __pyx_t_368 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_366, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_367, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_368, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8018:                                                 Col[i, j, 0] = blue
                        __pyx_t_369 = __pyx_v_i;
                        __pyx_t_370 = __pyx_v_j;
                        __pyx_t_371 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_369, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_370, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_371, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8019:                                                 a[k] = 1
                        __pyx_t_372 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_372, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8020:                                                 break
                        goto __pyx_L130_break;
+8021:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8022:                                             if I[i, j - 1] == Io:
                      __pyx_t_373 = __pyx_v_i;
                      __pyx_t_374 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_373, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_374, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8023:                                                 I[i, j] = Io
                        __pyx_t_375 = __pyx_v_i;
                        __pyx_t_376 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_375, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_376, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8024:                                                 Col[i, j, 2] = red
                        __pyx_t_377 = __pyx_v_i;
                        __pyx_t_378 = __pyx_v_j;
                        __pyx_t_379 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_377, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_378, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_379, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8025:                                                 Col[i, j, 1] = green
                        __pyx_t_380 = __pyx_v_i;
                        __pyx_t_381 = __pyx_v_j;
                        __pyx_t_382 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_380, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_381, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_382, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8026:                                                 Col[i, j, 0] = blue
                        __pyx_t_383 = __pyx_v_i;
                        __pyx_t_384 = __pyx_v_j;
                        __pyx_t_385 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_383, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_384, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_385, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8027:                                                 a[k] = 1
                        __pyx_t_386 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_386, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8028:                                                 break
                        goto __pyx_L130_break;
 8029: 
+8030:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8031:                                             if I[i, j + 1] == Io:
                      __pyx_t_387 = __pyx_v_i;
                      __pyx_t_388 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_387, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_388, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8032:                                                 I[i, j] = Io
                        __pyx_t_389 = __pyx_v_i;
                        __pyx_t_390 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_389, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_390, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8033:                                                 Col[i, j, 2] = red
                        __pyx_t_391 = __pyx_v_i;
                        __pyx_t_392 = __pyx_v_j;
                        __pyx_t_393 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_391, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_392, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_393, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8034:                                                 Col[i, j, 1] = green
                        __pyx_t_394 = __pyx_v_i;
                        __pyx_t_395 = __pyx_v_j;
                        __pyx_t_396 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_394, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_395, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_396, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8035:                                                 Col[i, j, 0] = blue
                        __pyx_t_397 = __pyx_v_i;
                        __pyx_t_398 = __pyx_v_j;
                        __pyx_t_399 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_397, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_398, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_399, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8036:                                                 a[k] = 1
                        __pyx_t_400 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_400, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8037:                                                 break
                        goto __pyx_L130_break;
 8038: 
 8039: 
+8040:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8041:                                             if  I[i + 1, j] == Io:
                      __pyx_t_401 = (__pyx_v_i + 1);
                      __pyx_t_402 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_401, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_402, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8042:                                                 I[i, j] = Io
                        __pyx_t_403 = __pyx_v_i;
                        __pyx_t_404 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_403, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_404, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8043:                                                 Col[i, j, 2] = red
                        __pyx_t_405 = __pyx_v_i;
                        __pyx_t_406 = __pyx_v_j;
                        __pyx_t_407 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_405, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_406, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_407, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8044:                                                 Col[i, j, 1] = green
                        __pyx_t_408 = __pyx_v_i;
                        __pyx_t_409 = __pyx_v_j;
                        __pyx_t_410 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_408, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_409, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_410, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8045:                                                 Col[i, j, 0] = blue
                        __pyx_t_411 = __pyx_v_i;
                        __pyx_t_412 = __pyx_v_j;
                        __pyx_t_413 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_411, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_412, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_413, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8046:                                                 a[k] = 1
                        __pyx_t_414 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_414, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8047:                                                 break
                        goto __pyx_L130_break;
 8048: 
 8049: 
 8050: 
 8051:                         # INWARD
+8052:                         for i in range(imax, io - 1, -1):
            __pyx_t_165 = (__pyx_v_io - 1);
            for (__pyx_t_164 = __pyx_v_imax; __pyx_t_164 > __pyx_t_165; __pyx_t_164-=1) {
              __pyx_v_i = __pyx_t_164;
+8053:                             for j in range(jo, jmax + 1):
              __pyx_t_181 = (__pyx_v_jmax + 1);
              for (__pyx_t_180 = __pyx_v_jo; __pyx_t_180 < __pyx_t_181; __pyx_t_180+=1) {
                __pyx_v_j = __pyx_t_180;
+8054:                                 for dum in range(1):
                for (__pyx_t_182 = 0; __pyx_t_182 < 1; __pyx_t_182+=1) {
                  __pyx_v_dum = __pyx_t_182;
+8055:                                     if II[i, j] == Io:
                  __pyx_t_415 = __pyx_v_i;
                  __pyx_t_416 = __pyx_v_j;
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_415, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_416, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
                }
                __pyx_L145_break:;
              }
+8056:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8057:                                             if  I[i - 1, j] == Io:
                      __pyx_t_417 = (__pyx_v_i - 1);
                      __pyx_t_418 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_417, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_418, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8058:                                                 I[i, j] = Io
                        __pyx_t_419 = __pyx_v_i;
                        __pyx_t_420 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_419, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_420, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8059:                                                 Col[i, j, 2] = red
                        __pyx_t_421 = __pyx_v_i;
                        __pyx_t_422 = __pyx_v_j;
                        __pyx_t_423 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_421, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_422, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_423, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8060:                                                 Col[i, j, 1] = green
                        __pyx_t_424 = __pyx_v_i;
                        __pyx_t_425 = __pyx_v_j;
                        __pyx_t_426 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_424, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_425, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_426, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8061:                                                 Col[i, j, 0] = blue
                        __pyx_t_427 = __pyx_v_i;
                        __pyx_t_428 = __pyx_v_j;
                        __pyx_t_429 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_427, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_428, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_429, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8062:                                                 a[k] = 1
                        __pyx_t_430 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_430, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8063:                                                 break
                        goto __pyx_L145_break;
+8064:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8065:                                             if I[i, j - 1] == Io:
                      __pyx_t_431 = __pyx_v_i;
                      __pyx_t_432 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_431, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_432, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8066:                                                 I[i, j] = Io
                        __pyx_t_433 = __pyx_v_i;
                        __pyx_t_434 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_433, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_434, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8067:                                                 Col[i, j, 2] = red
                        __pyx_t_435 = __pyx_v_i;
                        __pyx_t_436 = __pyx_v_j;
                        __pyx_t_437 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_435, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_436, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_437, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8068:                                                 Col[i, j, 1] = green
                        __pyx_t_438 = __pyx_v_i;
                        __pyx_t_439 = __pyx_v_j;
                        __pyx_t_440 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_438, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_439, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_440, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8069:                                                 Col[i, j, 0] = blue
                        __pyx_t_441 = __pyx_v_i;
                        __pyx_t_442 = __pyx_v_j;
                        __pyx_t_443 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_441, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_442, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_443, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8070:                                                 a[k] = 1
                        __pyx_t_444 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_444, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8071:                                                 break
                        goto __pyx_L145_break;
 8072: 
+8073:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8074:                                             if I[i, j + 1] == Io:
                      __pyx_t_445 = __pyx_v_i;
                      __pyx_t_446 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_445, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_446, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8075:                                                 I[i, j] = Io
                        __pyx_t_447 = __pyx_v_i;
                        __pyx_t_448 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_447, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_448, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8076:                                                 Col[i, j, 2] = red
                        __pyx_t_449 = __pyx_v_i;
                        __pyx_t_450 = __pyx_v_j;
                        __pyx_t_451 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_449, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_450, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_451, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8077:                                                 Col[i, j, 1] = green
                        __pyx_t_452 = __pyx_v_i;
                        __pyx_t_453 = __pyx_v_j;
                        __pyx_t_454 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_452, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_453, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_454, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8078:                                                 Col[i, j, 0] = blue
                        __pyx_t_455 = __pyx_v_i;
                        __pyx_t_456 = __pyx_v_j;
                        __pyx_t_457 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_455, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_456, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_457, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8079:                                                 a[k] = 1
                        __pyx_t_458 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_458, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8080:                                                 break
                        goto __pyx_L145_break;
 8081: 
 8082: 
+8083:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8084:                                             if  I[i + 1, j] == Io:
                      __pyx_t_459 = (__pyx_v_i + 1);
                      __pyx_t_460 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_459, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_460, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8085:                                                 I[i, j] = Io
                        __pyx_t_461 = __pyx_v_i;
                        __pyx_t_462 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_461, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_462, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8086:                                                 Col[i, j, 2] = red
                        __pyx_t_463 = __pyx_v_i;
                        __pyx_t_464 = __pyx_v_j;
                        __pyx_t_465 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_463, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_464, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_465, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8087:                                                 Col[i, j, 1] = green
                        __pyx_t_466 = __pyx_v_i;
                        __pyx_t_467 = __pyx_v_j;
                        __pyx_t_468 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_466, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_467, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_468, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8088:                                                 Col[i, j, 0] = blue
                        __pyx_t_469 = __pyx_v_i;
                        __pyx_t_470 = __pyx_v_j;
                        __pyx_t_471 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_469, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_470, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_471, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8089:                                                 a[k] = 1
                        __pyx_t_472 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_472, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8090:                                                 break
                        goto __pyx_L145_break;
 8091: 
+8092:                             for j in range(jo - 1, jmin - 1, -1):
              __pyx_t_181 = (__pyx_v_jmin - 1);
              for (__pyx_t_180 = (__pyx_v_jo - 1); __pyx_t_180 > __pyx_t_181; __pyx_t_180-=1) {
                __pyx_v_j = __pyx_t_180;
+8093:                                 for dum in range(1):
                for (__pyx_t_182 = 0; __pyx_t_182 < 1; __pyx_t_182+=1) {
                  __pyx_v_dum = __pyx_t_182;
+8094:                                     if II[i, j] == Io:
                  __pyx_t_473 = __pyx_v_i;
                  __pyx_t_474 = __pyx_v_j;
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_473, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_474, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
                }
                __pyx_L158_break:;
              }
            }
+8095:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8096:                                             if  I[i - 1, j] == Io:
                      __pyx_t_475 = (__pyx_v_i - 1);
                      __pyx_t_476 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_475, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_476, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8097:                                                 I[i, j] = Io
                        __pyx_t_477 = __pyx_v_i;
                        __pyx_t_478 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_477, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_478, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8098:                                                 Col[i, j, 2] = red
                        __pyx_t_479 = __pyx_v_i;
                        __pyx_t_480 = __pyx_v_j;
                        __pyx_t_481 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_479, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_480, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_481, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8099:                                                 Col[i, j, 1] = green
                        __pyx_t_482 = __pyx_v_i;
                        __pyx_t_483 = __pyx_v_j;
                        __pyx_t_484 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_482, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_483, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_484, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8100:                                                 Col[i, j, 0] = blue
                        __pyx_t_485 = __pyx_v_i;
                        __pyx_t_486 = __pyx_v_j;
                        __pyx_t_487 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_485, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_486, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_487, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8101:                                                 a[k] = 1
                        __pyx_t_488 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_488, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8102:                                                 break
                        goto __pyx_L158_break;
+8103:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8104:                                             if I[i, j - 1] == Io:
                      __pyx_t_489 = __pyx_v_i;
                      __pyx_t_490 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_489, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_490, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8105:                                                 I[i, j] = Io
                        __pyx_t_491 = __pyx_v_i;
                        __pyx_t_492 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_491, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_492, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8106:                                                 Col[i, j, 2] = red
                        __pyx_t_493 = __pyx_v_i;
                        __pyx_t_494 = __pyx_v_j;
                        __pyx_t_495 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_493, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_494, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_495, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8107:                                                 Col[i, j, 1] = green
                        __pyx_t_496 = __pyx_v_i;
                        __pyx_t_497 = __pyx_v_j;
                        __pyx_t_498 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_496, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_497, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_498, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8108:                                                 Col[i, j, 0] = blue
                        __pyx_t_499 = __pyx_v_i;
                        __pyx_t_500 = __pyx_v_j;
                        __pyx_t_501 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_499, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_500, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_501, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8109:                                                 a[k] = 1
                        __pyx_t_502 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_502, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8110:                                                 break
                        goto __pyx_L158_break;
 8111: 
+8112:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8113:                                             if I[i, j + 1] == Io:
                      __pyx_t_503 = __pyx_v_i;
                      __pyx_t_504 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_503, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_504, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8114:                                                 I[i, j] = Io
                        __pyx_t_505 = __pyx_v_i;
                        __pyx_t_506 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_505, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_506, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8115:                                                 Col[i, j, 2] = red
                        __pyx_t_507 = __pyx_v_i;
                        __pyx_t_508 = __pyx_v_j;
                        __pyx_t_509 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_507, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_508, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_509, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8116:                                                 Col[i, j, 1] = green
                        __pyx_t_510 = __pyx_v_i;
                        __pyx_t_511 = __pyx_v_j;
                        __pyx_t_512 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_510, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_511, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_512, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8117:                                                 Col[i, j, 0] = blue
                        __pyx_t_513 = __pyx_v_i;
                        __pyx_t_514 = __pyx_v_j;
                        __pyx_t_515 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_513, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_514, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_515, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8118:                                                 a[k] = 1
                        __pyx_t_516 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_516, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8119:                                                 break
                        goto __pyx_L158_break;
 8120: 
 8121: 
+8122:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8123:                                             if  I[i + 1, j] == Io:
                      __pyx_t_517 = (__pyx_v_i + 1);
                      __pyx_t_518 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_517, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_518, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8124:                                                 I[i, j] = Io
                        __pyx_t_519 = __pyx_v_i;
                        __pyx_t_520 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_519, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_520, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8125:                                                 Col[i, j, 2] = red
                        __pyx_t_521 = __pyx_v_i;
                        __pyx_t_522 = __pyx_v_j;
                        __pyx_t_523 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_521, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_522, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_523, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8126:                                                 Col[i, j, 1] = green
                        __pyx_t_524 = __pyx_v_i;
                        __pyx_t_525 = __pyx_v_j;
                        __pyx_t_526 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_524, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_525, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_526, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8127:                                                 Col[i, j, 0] = blue
                        __pyx_t_527 = __pyx_v_i;
                        __pyx_t_528 = __pyx_v_j;
                        __pyx_t_529 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_527, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_528, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_529, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8128:                                                 a[k] = 1
                        __pyx_t_530 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_530, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8129:                                                 break
                        goto __pyx_L158_break;
 8130: 
 8131: 
 8132: 
+8133:                         for i in range(imin, io, -1):
            __pyx_t_165 = __pyx_v_io;
            for (__pyx_t_164 = __pyx_v_imin; __pyx_t_164 > __pyx_t_165; __pyx_t_164-=1) {
              __pyx_v_i = __pyx_t_164;
+8134:                             for j in range(jo, jmax + 1):
              __pyx_t_181 = (__pyx_v_jmax + 1);
              for (__pyx_t_180 = __pyx_v_jo; __pyx_t_180 < __pyx_t_181; __pyx_t_180+=1) {
                __pyx_v_j = __pyx_t_180;
+8135:                                 for dum in range(1):
                for (__pyx_t_182 = 0; __pyx_t_182 < 1; __pyx_t_182+=1) {
                  __pyx_v_dum = __pyx_t_182;
+8136:                                     if II[i, j] == Io:
                  __pyx_t_531 = __pyx_v_i;
                  __pyx_t_532 = __pyx_v_j;
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_531, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_532, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
                }
                __pyx_L173_break:;
              }
+8137:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8138:                                             if  I[i - 1, j] == Io:
                      __pyx_t_533 = (__pyx_v_i - 1);
                      __pyx_t_534 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_533, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_534, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8139:                                                 I[i, j] = Io
                        __pyx_t_535 = __pyx_v_i;
                        __pyx_t_536 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_535, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_536, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8140:                                                 Col[i, j, 2] = red
                        __pyx_t_537 = __pyx_v_i;
                        __pyx_t_538 = __pyx_v_j;
                        __pyx_t_539 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_537, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_538, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_539, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8141:                                                 Col[i, j, 1] = green
                        __pyx_t_540 = __pyx_v_i;
                        __pyx_t_541 = __pyx_v_j;
                        __pyx_t_542 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_540, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_541, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_542, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8142:                                                 Col[i, j, 0] = blue
                        __pyx_t_543 = __pyx_v_i;
                        __pyx_t_544 = __pyx_v_j;
                        __pyx_t_545 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_543, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_544, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_545, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8143:                                                 a[k] = 1
                        __pyx_t_546 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_546, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8144:                                                 break
                        goto __pyx_L173_break;
+8145:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8146:                                             if I[i, j - 1] == Io:
                      __pyx_t_547 = __pyx_v_i;
                      __pyx_t_548 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_547, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_548, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8147:                                                 I[i, j] = Io
                        __pyx_t_549 = __pyx_v_i;
                        __pyx_t_550 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_549, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_550, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8148:                                                 Col[i, j, 2] = red
                        __pyx_t_551 = __pyx_v_i;
                        __pyx_t_552 = __pyx_v_j;
                        __pyx_t_553 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_551, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_552, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_553, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8149:                                                 Col[i, j, 1] = green
                        __pyx_t_554 = __pyx_v_i;
                        __pyx_t_555 = __pyx_v_j;
                        __pyx_t_556 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_554, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_555, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_556, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8150:                                                 Col[i, j, 0] = blue
                        __pyx_t_557 = __pyx_v_i;
                        __pyx_t_558 = __pyx_v_j;
                        __pyx_t_559 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_557, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_558, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_559, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8151:                                                 a[k] = 1
                        __pyx_t_560 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_560, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8152:                                                 break
                        goto __pyx_L173_break;
 8153: 
+8154:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8155:                                             if I[i, j + 1] == Io:
                      __pyx_t_561 = __pyx_v_i;
                      __pyx_t_562 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_561, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_562, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8156:                                                 I[i, j] = Io
                        __pyx_t_563 = __pyx_v_i;
                        __pyx_t_564 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_563, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_564, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8157:                                                 Col[i, j, 2] = red
                        __pyx_t_565 = __pyx_v_i;
                        __pyx_t_566 = __pyx_v_j;
                        __pyx_t_567 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_565, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_566, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_567, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8158:                                                 Col[i, j, 1] = green
                        __pyx_t_568 = __pyx_v_i;
                        __pyx_t_569 = __pyx_v_j;
                        __pyx_t_570 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_568, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_569, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_570, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8159:                                                 Col[i, j, 0] = blue
                        __pyx_t_571 = __pyx_v_i;
                        __pyx_t_572 = __pyx_v_j;
                        __pyx_t_573 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_571, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_572, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_573, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8160:                                                 a[k] = 1
                        __pyx_t_574 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_574, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8161:                                                 break
                        goto __pyx_L173_break;
 8162: 
 8163: 
+8164:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8165:                                             if  I[i + 1, j] == Io:
                      __pyx_t_575 = (__pyx_v_i + 1);
                      __pyx_t_576 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_575, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_576, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8166:                                                 I[i, j] = Io
                        __pyx_t_577 = __pyx_v_i;
                        __pyx_t_578 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_577, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_578, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8167:                                                 Col[i, j, 2] = red
                        __pyx_t_579 = __pyx_v_i;
                        __pyx_t_580 = __pyx_v_j;
                        __pyx_t_581 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_579, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_580, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_581, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8168:                                                 Col[i, j, 1] = green
                        __pyx_t_582 = __pyx_v_i;
                        __pyx_t_583 = __pyx_v_j;
                        __pyx_t_584 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_582, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_583, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_584, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8169:                                                 Col[i, j, 0] = blue
                        __pyx_t_585 = __pyx_v_i;
                        __pyx_t_586 = __pyx_v_j;
                        __pyx_t_587 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_585, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_586, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_587, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8170:                                                 a[k] = 1
                        __pyx_t_588 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_588, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8171:                                                 break
                        goto __pyx_L173_break;
 8172: 
+8173:                             for j in range(jo - 1, jmin - 1, -1):
              __pyx_t_181 = (__pyx_v_jmin - 1);
              for (__pyx_t_180 = (__pyx_v_jo - 1); __pyx_t_180 > __pyx_t_181; __pyx_t_180-=1) {
                __pyx_v_j = __pyx_t_180;
+8174:                                 for dum in range(1):
                for (__pyx_t_182 = 0; __pyx_t_182 < 1; __pyx_t_182+=1) {
                  __pyx_v_dum = __pyx_t_182;
+8175:                                     if II[i, j] == Io:
                  __pyx_t_589 = __pyx_v_i;
                  __pyx_t_590 = __pyx_v_j;
                  __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_II.rcbuffer->pybuffer.buf, __pyx_t_589, __pyx_pybuffernd_II.diminfo[0].strides, __pyx_t_590, __pyx_pybuffernd_II.diminfo[1].strides)) == __pyx_v_Io) != 0);
                  if (__pyx_t_25) {
/* … */
                  }
                }
                __pyx_L186_break:;
              }
            }
+8176:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8177:                                             if  I[i - 1, j] == Io:
                      __pyx_t_591 = (__pyx_v_i - 1);
                      __pyx_t_592 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_591, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_592, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8178:                                                 I[i, j] = Io
                        __pyx_t_593 = __pyx_v_i;
                        __pyx_t_594 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_593, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_594, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8179:                                                 Col[i, j, 2] = red
                        __pyx_t_595 = __pyx_v_i;
                        __pyx_t_596 = __pyx_v_j;
                        __pyx_t_597 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_595, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_596, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_597, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8180:                                                 Col[i, j, 1] = green
                        __pyx_t_598 = __pyx_v_i;
                        __pyx_t_599 = __pyx_v_j;
                        __pyx_t_600 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_598, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_599, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_600, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8181:                                                 Col[i, j, 0] = blue
                        __pyx_t_601 = __pyx_v_i;
                        __pyx_t_602 = __pyx_v_j;
                        __pyx_t_603 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_601, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_602, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_603, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8182:                                                 a[k] = 1
                        __pyx_t_604 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_604, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8183:                                                 break
                        goto __pyx_L186_break;
+8184:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8185:                                             if I[i, j - 1] == Io:
                      __pyx_t_605 = __pyx_v_i;
                      __pyx_t_606 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_605, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_606, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8186:                                                 I[i, j] = Io
                        __pyx_t_607 = __pyx_v_i;
                        __pyx_t_608 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_607, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_608, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8187:                                                 Col[i, j, 2] = red
                        __pyx_t_609 = __pyx_v_i;
                        __pyx_t_610 = __pyx_v_j;
                        __pyx_t_611 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_609, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_610, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_611, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8188:                                                 Col[i, j, 1] = green
                        __pyx_t_612 = __pyx_v_i;
                        __pyx_t_613 = __pyx_v_j;
                        __pyx_t_614 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_612, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_613, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_614, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8189:                                                 Col[i, j, 0] = blue
                        __pyx_t_615 = __pyx_v_i;
                        __pyx_t_616 = __pyx_v_j;
                        __pyx_t_617 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_615, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_616, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_617, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8190:                                                 a[k] = 1
                        __pyx_t_618 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_618, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8191:                                                 break
                        goto __pyx_L186_break;
 8192: 
+8193:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8194:                                             if I[i, j + 1] == Io:
                      __pyx_t_619 = __pyx_v_i;
                      __pyx_t_620 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_619, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_620, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8195:                                                 I[i, j] = Io
                        __pyx_t_621 = __pyx_v_i;
                        __pyx_t_622 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_621, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_622, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8196:                                                 Col[i, j, 2] = red
                        __pyx_t_623 = __pyx_v_i;
                        __pyx_t_624 = __pyx_v_j;
                        __pyx_t_625 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_623, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_624, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_625, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8197:                                                 Col[i, j, 1] = green
                        __pyx_t_626 = __pyx_v_i;
                        __pyx_t_627 = __pyx_v_j;
                        __pyx_t_628 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_626, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_627, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_628, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8198:                                                 Col[i, j, 0] = blue
                        __pyx_t_629 = __pyx_v_i;
                        __pyx_t_630 = __pyx_v_j;
                        __pyx_t_631 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_629, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_630, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_631, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8199:                                                 a[k] = 1
                        __pyx_t_632 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_632, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8200:                                                 break
                        goto __pyx_L186_break;
 8201: 
 8202: 
+8203:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8204:                                             if  I[i + 1, j] == Io:
                      __pyx_t_633 = (__pyx_v_i + 1);
                      __pyx_t_634 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_633, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_634, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8205:                                                 I[i, j] = Io
                        __pyx_t_635 = __pyx_v_i;
                        __pyx_t_636 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_635, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_636, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8206:                                                 Col[i, j, 2] = red
                        __pyx_t_637 = __pyx_v_i;
                        __pyx_t_638 = __pyx_v_j;
                        __pyx_t_639 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_637, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_638, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_639, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8207:                                                 Col[i, j, 1] = green
                        __pyx_t_640 = __pyx_v_i;
                        __pyx_t_641 = __pyx_v_j;
                        __pyx_t_642 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_640, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_641, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_642, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8208:                                                 Col[i, j, 0] = blue
                        __pyx_t_643 = __pyx_v_i;
                        __pyx_t_644 = __pyx_v_j;
                        __pyx_t_645 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_643, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_644, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_645, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8209:                                                 a[k] = 1
                        __pyx_t_646 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_646, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8210:                                                 break
                        goto __pyx_L186_break;
 8211: 
+8212:                 if a[k] == 0:
        __pyx_t_165 = __pyx_v_k;
        __pyx_t_25 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
        if (__pyx_t_25) {
/* … */
        }
+8213:                     xmin = max(0, xo - MAJceil)
          __pyx_t_164 = (__pyx_v_xo - __pyx_v_MAJceil);
          __pyx_t_647 = 0;
          if (((__pyx_t_164 > __pyx_t_647) != 0)) {
            __pyx_t_181 = __pyx_t_164;
          } else {
            __pyx_t_181 = __pyx_t_647;
          }
          __pyx_v_xmin = __pyx_t_181;
+8214:                     xmax = min(m - 1, xo + MAJceil)
          __pyx_t_181 = (__pyx_v_xo + __pyx_v_MAJceil);
          __pyx_t_164 = (__pyx_v_m - 1);
          if (((__pyx_t_181 < __pyx_t_164) != 0)) {
            __pyx_t_180 = __pyx_t_181;
          } else {
            __pyx_t_180 = __pyx_t_164;
          }
          __pyx_v_xmax = __pyx_t_180;
+8215:                     ymin = max(0, yo - MINceil)
          __pyx_t_180 = (__pyx_v_yo - __pyx_v_MINceil);
          __pyx_t_647 = 0;
          if (((__pyx_t_180 > __pyx_t_647) != 0)) {
            __pyx_t_181 = __pyx_t_180;
          } else {
            __pyx_t_181 = __pyx_t_647;
          }
          __pyx_v_ymin = __pyx_t_181;
+8216:                     ymax = min(n - 1, yo + MINceil)
          __pyx_t_181 = (__pyx_v_yo + __pyx_v_MINceil);
          __pyx_t_180 = (__pyx_v_n - 1);
          if (((__pyx_t_181 < __pyx_t_180) != 0)) {
            __pyx_t_164 = __pyx_t_181;
          } else {
            __pyx_t_164 = __pyx_t_180;
          }
          __pyx_v_ymax = __pyx_t_164;
+8217:                     a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
          __pyx_t_164 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_164, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 8218: 
 8219: 
 8220: 
 8221: 
+8222:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+8223:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
+8224:         nnz = cv2.countNonZero(I)
    __pyx_t_36 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_36);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_36, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
    __pyx_t_36 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_36)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_36);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_36) {
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_8, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_36); __pyx_t_36 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_140 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_140 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8224, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_nnz = __pyx_t_140;
  }
 8225: 
 8226: 
 8227: 
+8228:     obj.p = p
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_6) < 0) __PYX_ERR(0, 8228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+8229:     toc = time.time()
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8229, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8229, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_24 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_24 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 8229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_toc = __pyx_t_24;
+8230:     obj.exetime = toc - tic
  __pyx_t_6 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_6) < 0) __PYX_ERR(0, 8230, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+8231:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_delete); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_36 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_36, __pyx_n_s_arange); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
  __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_40 = NULL;
  __pyx_t_28 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_40)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_40);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_28 = 1;
    }
  }
  __pyx_t_26 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (__pyx_t_40) {
    __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_40); __pyx_t_40 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_36);
  PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_t_36);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_7);
  __pyx_t_36 = 0;
  __pyx_t_7 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_28 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_28 = 1;
    }
  }
  __pyx_t_26 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_6) < 0) __PYX_ERR(0, 8231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+8232:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_delete); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_arange); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_36 = NULL;
  __pyx_t_28 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_36)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_36);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_28 = 1;
    }
  }
  __pyx_t_40 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (__pyx_t_36) {
    __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_36); __pyx_t_36 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_t_7);
  __pyx_t_1 = 0;
  __pyx_t_7 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_40, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_28 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_26))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_26);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_26, function);
      __pyx_t_28 = 1;
    }
  }
  __pyx_t_40 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_40);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_6) < 0) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+8233:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 8233, __pyx_L1_error)
+8234:     obj.adotVal = adotVal
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_adotVal, ((PyObject *)__pyx_v_adotVal)) < 0) __PYX_ERR(0, 8234, __pyx_L1_error)
+8235:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 8235, __pyx_L1_error)
+8236:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 8237: 
+8238: def Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_57Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_57Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot = {"Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot", (PyCFunction)__pyx_pw_9libEVOLVE_57Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_57Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_56Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_56Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_MN;
  float __pyx_v_R;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PY_LONG_LONG __pyx_v_seq;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  PyObject *__pyx_v_Thetafunc = NULL;
  PyObject *__pyx_v_Adotfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_delX;
  PY_LONG_LONG __pyx_v_delY;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_tmp;
  float __pyx_v_Min;
  float __pyx_v_Maj;
  float __pyx_v_theta;
  float __pyx_v_c;
  float __pyx_v_s;
  float __pyx_v_dr;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Theta = 0;
  PyArrayObject *__pyx_v_adotVal = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  double __pyx_v_adotValmax;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Theta;
  __Pyx_Buffer __pyx_pybuffer_Theta;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_adotVal;
  __Pyx_Buffer __pyx_pybuffer_adotVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot", 0);
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Theta.pybuffer.buf = NULL;
  __pyx_pybuffer_Theta.refcount = 0;
  __pyx_pybuffernd_Theta.data = NULL;
  __pyx_pybuffernd_Theta.rcbuffer = &__pyx_pybuffer_Theta;
  __pyx_pybuffer_adotVal.pybuffer.buf = NULL;
  __pyx_pybuffer_adotVal.refcount = 0;
  __pyx_pybuffernd_adotVal.data = NULL;
  __pyx_pybuffernd_adotVal.rcbuffer = &__pyx_pybuffer_adotVal;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_35);
  __Pyx_XDECREF(__pyx_t_39);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF(__pyx_v_Thetafunc);
  __Pyx_XDECREF(__pyx_v_Adotfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Theta);
  __Pyx_XDECREF((PyObject *)__pyx_v_adotVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__67 = PyTuple_Pack(73, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_fstop, __pyx_n_s_MN, __pyx_n_s_R, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_seq, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_Thetafunc, __pyx_n_s_Adotfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_rad, __pyx_n_s_countim, __pyx_n_s_w, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_delX, __pyx_n_s_delY, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_dum, __pyx_n_s_Iter, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_tmp, __pyx_n_s_Min, __pyx_n_s_Maj, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_dr, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_MAJ, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Theta, __pyx_n_s_adotVal, __pyx_n_s_Col, __pyx_n_s_col, __pyx_n_s_adotValmax); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 8238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__67);
  __Pyx_GIVEREF(__pyx_tuple__67);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_57Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_without_aspect_with_theta_with_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_11, __pyx_t_2) < 0) __PYX_ERR(0, 8238, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(1, 0, 73, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_11, 8238, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(0, 8238, __pyx_L1_error)
 8239:     # Grabbing data from the input object
+8240:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+8241:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+8242:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8242, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+8243:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+8244:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 8244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+8245:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+8246:     cdef float R = obj.R
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_R); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 8246, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_R = __pyx_t_3;
+8247:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+8248:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8248, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+8249:     cdef long long seq = obj.seq
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_seq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8249, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_seq = __pyx_t_2;
+8250:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+8251:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+8252:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+8253:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+8254:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
+8255:     Thetafunc = obj.Thetafunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Thetafunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Thetafunc = __pyx_t_1;
  __pyx_t_1 = 0;
+8256:     Adotfunc = obj.Adotfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Adotfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Adotfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 8257: 
 8258:     # Declaring other variables
 8259:     cdef double tic, toc
 8260:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, dp, nnz, rad, countim, w, xt, yt, i, j, k, xo, yo, delX, delY, xmin, xmax, ymin, ymax, dum, Iter
 8261:     cdef float dt, f, t, tmp, Min, Maj, theta, c, s, dr, red, green, blue
+8262:     cdef np.ndarray[np.float64_t, ndim = 1] MAJ = np.zeros(MN, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 8262, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8262, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8262, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+8263:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 8263, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8263, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8263, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+8264:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 8264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8264, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8264, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+8265:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8265, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8265, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+8266:     cdef np.ndarray[np.int_t, ndim = 1] a = np.ones(MN, dtype=np.int)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 8266, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8266, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8266, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+8267:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8267, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8267, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+8268:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 8268, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8268, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8268, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+8269:     cdef np.ndarray[np.float64_t, ndim = 1] Theta = np.zeros(MN, dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 8269, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8269, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Theta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8269, __pyx_L1_error)
    } else {__pyx_pybuffernd_Theta.diminfo[0].strides = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Theta.diminfo[0].shape = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Theta = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+8270:     cdef np.ndarray[np.float64_t, ndim = 1] adotVal = np.zeros(MN, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 8270, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8270, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_adotVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8270, __pyx_L1_error)
    } else {__pyx_pybuffernd_adotVal.diminfo[0].strides = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_adotVal.diminfo[0].shape = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_adotVal = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+8271:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8271, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8271, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+8272:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 8272, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8272, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8272, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_19 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+8273:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_8) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8273, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+8274:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8274, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_5);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8274, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8274, __pyx_L1_error)
  }
  __pyx_t_19 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_5));
  __pyx_t_5 = 0;
+8275:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8275, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8275, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 8275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_tic = __pyx_t_23;
 8276: 
 8277: 
+8278:     t = 0
  __pyx_v_t = 0.0;
+8279:     p = 0
  __pyx_v_p = 0;
+8280:     dp = 0
  __pyx_v_dp = 0;
+8281:     countim = 0
  __pyx_v_countim = 0;
+8282:     nnz = 0
  __pyx_v_nnz = 0;
+8283:     Iter = 1
  __pyx_v_Iter = 1;
+8284:     while nnz < MN:
  while (1) {
    __pyx_t_24 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_24) break;
+8285:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+8286:         dt = 1.0 / Gt(t)
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_6 = __pyx_v_Gt; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8286, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_8);
      __pyx_t_8 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_5, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 8286, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_dt = __pyx_t_3;
+8287:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_6 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_8 = __pyx_v_Ndot; __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8287, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_25 = PyTuple_New(1+1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8287, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_25, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8287, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8287, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_dp = __pyx_t_2;
+8288:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+8289:         if pdelNxy == []:
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8289, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_24 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_24 < 0)) __PYX_ERR(0, 8289, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_24) {
/* … */
      goto __pyx_L5;
    }
+8290:             if seq == 4 or seq == 5 or seq == 6:
      switch (__pyx_v_seq) {
        case 4:
        case 5:
        case 6:
/* … */
        break;
        default:
+8291:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L7_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L7_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_24 = __pyx_t_26;
        __pyx_L7_bool_binop_done:;
        if (__pyx_t_24) {
/* … */
        }
+8292:                     count = 0
          __pyx_v_count = 0;
+8293:                     while count < dp:
          while (1) {
            __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_24) break;
+8294:                         xt = np.random.randint(0, m - 1)
            __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8294, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8294, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8294, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8294, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_25 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_25)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_25);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_1 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8294, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (__pyx_t_25) {
              __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_25); __pyx_t_25 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_27, __pyx_t_8);
            __pyx_t_8 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8294, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8294, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_2;
+8295:                         yt = np.random.randint(0, n - 1)
            __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8295, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8295, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8295, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8295, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_8 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_8)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_8);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8295, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            if (__pyx_t_8) {
              __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_8); __pyx_t_8 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_25, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8295, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8295, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_2;
+8296:                         if I[xt, yt] == 0:
            __pyx_t_2 = __pyx_v_xt;
            __pyx_t_28 = __pyx_v_yt;
            __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_28, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
+8297:                             I[xt, yt] = p + count + 1
              __pyx_t_29 = __pyx_v_xt;
              __pyx_t_30 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_29, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_30, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8298:                             X[p + count] = xt
              __pyx_t_31 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_31, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8299:                             Y[p + count] = yt
              __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8300:                             a[p + count] = 1
              __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8301:                             MAJ[p + count] = 1
              __pyx_t_34 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8302:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, 1)
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8302, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8302, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8302, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_8 = __pyx_v_Adotfunc; __pyx_t_7 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_35 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8302, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_35, 0+__pyx_t_27, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_25);
              PyTuple_SET_ITEM(__pyx_t_35, 1+__pyx_t_27, __pyx_t_25);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_35, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_35, 3+__pyx_t_27, __pyx_int_0);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_35, 4+__pyx_t_27, __pyx_int_1);
              __pyx_t_5 = 0;
              __pyx_t_25 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_35, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8302, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8302, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_37 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_37, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_36;
+8303:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, adotVal[p + count])
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8303, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_35 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8303, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8303, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_38 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_25 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8303, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_5 = __pyx_v_Thetafunc; __pyx_t_7 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_39 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8303, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_39, 0+__pyx_t_27, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_35);
              PyTuple_SET_ITEM(__pyx_t_39, 1+__pyx_t_27, __pyx_t_35);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_39, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_39, 3+__pyx_t_27, __pyx_int_1);
              __Pyx_GIVEREF(__pyx_t_25);
              PyTuple_SET_ITEM(__pyx_t_39, 4+__pyx_t_27, __pyx_t_25);
              __pyx_t_8 = 0;
              __pyx_t_35 = 0;
              __pyx_t_1 = 0;
              __pyx_t_25 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_39, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8303, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8303, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_40 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_36;
+8304:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_41 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_42 = 0;
              __pyx_t_43 = __pyx_v_xt;
              __pyx_t_44 = __pyx_v_yt;
              __pyx_t_45 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_44, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_45, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_41, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_42, __pyx_pybuffernd_col.diminfo[1].strides));
+8305:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_46 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_47 = 1;
              __pyx_t_48 = __pyx_v_xt;
              __pyx_t_49 = __pyx_v_yt;
              __pyx_t_50 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_47, __pyx_pybuffernd_col.diminfo[1].strides));
+8306:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_51 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_52 = 2;
              __pyx_t_53 = __pyx_v_xt;
              __pyx_t_54 = __pyx_v_yt;
              __pyx_t_55 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_54, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_55, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_52, __pyx_pybuffernd_col.diminfo[1].strides));
+8307:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8308:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8309:             else:
+8310:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L14_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L14_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_24 = __pyx_t_26;
        __pyx_L14_bool_binop_done:;
        if (__pyx_t_24) {
/* … */
        }
        break;
      }
+8311:                     count = 0
          __pyx_v_count = 0;
+8312:                     while count < dp:
          while (1) {
            __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_24) break;
+8313:                         xt = np.random.randint(0, m - 1)
            __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8313, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8313, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_39);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8313, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
            __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8313, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_39);
            __pyx_t_25 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_25)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_25);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_1 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8313, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (__pyx_t_25) {
              __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_25); __pyx_t_25 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_39);
            PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_27, __pyx_t_39);
            __pyx_t_39 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8313, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_56 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_56 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8313, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_56;
+8314:                         yt = np.random.randint(0, n - 1)
            __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8314, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8314, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_randint); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8314, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8314, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_39 = NULL;
            __pyx_t_27 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_5);
              if (likely(__pyx_t_39)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_39);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_5, function);
                __pyx_t_27 = 1;
              }
            }
            __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8314, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_25);
            if (__pyx_t_39) {
              __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_39); __pyx_t_39 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_25, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8314, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_56 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_56 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8314, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_56;
+8315:                         if I[xt, yt] == 0:
            __pyx_t_56 = __pyx_v_xt;
            __pyx_t_57 = __pyx_v_yt;
            __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_57, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
+8316:                             I[xt, yt] = p + count + 1
              __pyx_t_58 = __pyx_v_xt;
              __pyx_t_59 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_59, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8317:                             X[p + count] = xt
              __pyx_t_60 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_60, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8318:                             Y[p + count] = yt
              __pyx_t_61 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8319:                             a[p + count] = 1
              __pyx_t_62 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8320:                             MAJ[p + count] = 1
              __pyx_t_63 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8321:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, 1)
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8321, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8321, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8321, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_39 = __pyx_v_Thetafunc; __pyx_t_35 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_39))) {
                __pyx_t_35 = PyMethod_GET_SELF(__pyx_t_39);
                if (likely(__pyx_t_35)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_39);
                  __Pyx_INCREF(__pyx_t_35);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_39, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_8 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8321, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (__pyx_t_35) {
                __Pyx_GIVEREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_35); __pyx_t_35 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_27, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_25);
              PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_27, __pyx_t_25);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_27, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_27, __pyx_int_1);
              __pyx_t_5 = 0;
              __pyx_t_25 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_39, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8321, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8321, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_64 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_64, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_36;
+8322:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, Theta[p + count], 1)
              __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8322, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8322, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8322, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_65 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_25 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8322, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_5 = __pyx_v_Adotfunc; __pyx_t_35 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_35 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_35)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_35);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8322, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_35) {
                __Pyx_GIVEREF(__pyx_t_35); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_35); __pyx_t_35 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_39);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_27, __pyx_t_39);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_27, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_25);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_27, __pyx_t_25);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_27, __pyx_int_1);
              __pyx_t_39 = 0;
              __pyx_t_8 = 0;
              __pyx_t_1 = 0;
              __pyx_t_25 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8322, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8322, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_66 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_36;
+8323:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_67 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_68 = 0;
              __pyx_t_69 = __pyx_v_xt;
              __pyx_t_70 = __pyx_v_yt;
              __pyx_t_71 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_70, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_71, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_col.diminfo[1].strides));
+8324:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_72 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_73 = 1;
              __pyx_t_74 = __pyx_v_xt;
              __pyx_t_75 = __pyx_v_yt;
              __pyx_t_76 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_75, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_76, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_73, __pyx_pybuffernd_col.diminfo[1].strides));
+8325:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_77 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_78 = 2;
              __pyx_t_79 = __pyx_v_xt;
              __pyx_t_80 = __pyx_v_yt;
              __pyx_t_81 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_80, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_81, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_78, __pyx_pybuffernd_col.diminfo[1].strides));
+8326:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8327:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8328:         else:
+8329:             if seq == 4 or seq == 5 or seq == 6:
    /*else*/ {
      switch (__pyx_v_seq) {
        case 4:
        case 5:
        case 6:
/* … */
        break;
        default:
+8330:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L21_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L21_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_24 = __pyx_t_26;
        __pyx_L21_bool_binop_done:;
        if (__pyx_t_24) {
/* … */
        }
+8331:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8331, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8331, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8331, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8331, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8331, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_39 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8331, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_39);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_8); __pyx_t_8 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_39, 0+__pyx_t_27, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_39, 1+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_39, 2+__pyx_t_27, __pyx_t_5);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_39, 3+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_25);
          PyTuple_SET_ITEM(__pyx_t_39, 4+__pyx_t_27, __pyx_t_25);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_39, 5+__pyx_t_27, __pyx_t_1);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_39, 6+__pyx_t_27, __pyx_int_1);
          __pyx_t_5 = 0;
          __pyx_t_25 = 0;
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_39, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8331, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 8331, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_39 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_39 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_39);
            #else
            __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8331, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_39 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8331, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_39);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8331, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_82 = Py_TYPE(__pyx_t_1)->tp_iternext;
            index = 0; __pyx_t_7 = __pyx_t_82(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L24_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_7);
            index = 1; __pyx_t_39 = __pyx_t_82(__pyx_t_1); if (unlikely(!__pyx_t_39)) goto __pyx_L24_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_39);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_82(__pyx_t_1), 2) < 0) __PYX_ERR(0, 8331, __pyx_L1_error)
            __pyx_t_82 = NULL;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            goto __pyx_L25_unpacking_done;
            __pyx_L24_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_82 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 8331, __pyx_L1_error)
            __pyx_L25_unpacking_done:;
          }
          if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8331, __pyx_L1_error)
          if (!(likely(((__pyx_t_39) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_39, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8331, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8331, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_7));
          __pyx_t_7 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_39);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8331, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_39));
          __pyx_t_39 = 0;
+8332:                     w = 0
          __pyx_v_w = 0;
+8333:                     count = 0
          __pyx_v_count = 0;
+8334:                     while count < dp:
          while (1) {
            __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_24) break;
+8335:                         xt = xtrial[w]
            __pyx_t_83 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+8336:                         yt = ytrial[w]
            __pyx_t_84 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+8337:                         if I[xt, yt] == 0:
            __pyx_t_85 = __pyx_v_xt;
            __pyx_t_86 = __pyx_v_yt;
            __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_24) {
/* … */
            }
+8338:                             I[xt, yt] = p + count + 1
              __pyx_t_87 = __pyx_v_xt;
              __pyx_t_88 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_88, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8339:                             X[p + count] = xt
              __pyx_t_89 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8340:                             Y[p + count] = yt
              __pyx_t_90 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8341:                             a[p + count] = 1
              __pyx_t_91 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_91, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8342:                             MAJ[p + count] = 1
              __pyx_t_92 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8343:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, 1)
              __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8343, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8343, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8343, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_25 = __pyx_v_Adotfunc; __pyx_t_5 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_25))) {
                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_25);
                if (likely(__pyx_t_5)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
                  __Pyx_INCREF(__pyx_t_5);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_25, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_8 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8343, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (__pyx_t_5) {
                __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_39);
              PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_27, __pyx_t_39);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_27, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_27, __pyx_int_0);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_27, __pyx_int_1);
              __pyx_t_39 = 0;
              __pyx_t_7 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8343, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8343, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_93 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_36;
+8344:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, adotVal[p + count])
              __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8344, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8344, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8344, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_94 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_7 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8344, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_39 = __pyx_v_Thetafunc; __pyx_t_5 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_39))) {
                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_39);
                if (likely(__pyx_t_5)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_39);
                  __Pyx_INCREF(__pyx_t_5);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_39, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_35 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8344, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              if (__pyx_t_5) {
                __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_5); __pyx_t_5 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_25);
              PyTuple_SET_ITEM(__pyx_t_35, 0+__pyx_t_27, __pyx_t_25);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_35, 1+__pyx_t_27, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_35, 2+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_35, 3+__pyx_t_27, __pyx_int_1);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_35, 4+__pyx_t_27, __pyx_t_7);
              __pyx_t_25 = 0;
              __pyx_t_8 = 0;
              __pyx_t_1 = 0;
              __pyx_t_7 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_39, __pyx_t_35, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8344, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
              __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8344, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_95 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_36;
+8345:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_96 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_97 = 0;
              __pyx_t_98 = __pyx_v_xt;
              __pyx_t_99 = __pyx_v_yt;
              __pyx_t_100 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_100, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_97, __pyx_pybuffernd_col.diminfo[1].strides));
+8346:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_101 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_102 = 1;
              __pyx_t_103 = __pyx_v_xt;
              __pyx_t_104 = __pyx_v_yt;
              __pyx_t_105 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_104, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_105, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_102, __pyx_pybuffernd_col.diminfo[1].strides));
+8347:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_106 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_107 = 2;
              __pyx_t_108 = __pyx_v_xt;
              __pyx_t_109 = __pyx_v_yt;
              __pyx_t_110 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_108, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_109, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_110, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_col.diminfo[1].strides));
+8348:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8349:                         if w < dp - 1:
            __pyx_t_24 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_24) {
/* … */
              goto __pyx_L29;
            }
+8350:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 8351:                         else:
+8352:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8352, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8352, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
              __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8352, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8352, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8352, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_8 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_35))) {
                __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_35);
                if (likely(__pyx_t_8)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_35);
                  __Pyx_INCREF(__pyx_t_8);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_35, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_25 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8352, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_25);
              if (__pyx_t_8) {
                __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_8); __pyx_t_8 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_39);
              PyTuple_SET_ITEM(__pyx_t_25, 2+__pyx_t_27, __pyx_t_39);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_25, 3+__pyx_t_27, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_25, 4+__pyx_t_27, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_25, 5+__pyx_t_27, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_25, 6+__pyx_t_27, __pyx_int_1);
              __pyx_t_39 = 0;
              __pyx_t_7 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_25, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8352, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
              __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 8352, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_35 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_25 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_35 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_25 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_35);
                __Pyx_INCREF(__pyx_t_25);
                #else
                __pyx_t_35 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8352, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_35);
                __pyx_t_25 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8352, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_25);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8352, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_1);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_82 = Py_TYPE(__pyx_t_1)->tp_iternext;
                index = 0; __pyx_t_35 = __pyx_t_82(__pyx_t_1); if (unlikely(!__pyx_t_35)) goto __pyx_L30_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_35);
                index = 1; __pyx_t_25 = __pyx_t_82(__pyx_t_1); if (unlikely(!__pyx_t_25)) goto __pyx_L30_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_25);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_82(__pyx_t_1), 2) < 0) __PYX_ERR(0, 8352, __pyx_L1_error)
                __pyx_t_82 = NULL;
                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                goto __pyx_L31_unpacking_done;
                __pyx_L30_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                __pyx_t_82 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 8352, __pyx_L1_error)
                __pyx_L31_unpacking_done:;
              }
              if (!(likely(((__pyx_t_35) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_35, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8352, __pyx_L1_error)
              if (!(likely(((__pyx_t_25) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_25, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8352, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_35);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8352, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_35));
              __pyx_t_35 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_25);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8352, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_25));
              __pyx_t_25 = 0;
+8353:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L29:;
          }
+8354:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8355:             else:
+8356:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_26 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L33_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_26) {
        } else {
          __pyx_t_24 = __pyx_t_26;
          goto __pyx_L33_bool_binop_done;
        }
        __pyx_t_26 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_24 = __pyx_t_26;
        __pyx_L33_bool_binop_done:;
        if (__pyx_t_24) {
/* … */
        }
        break;
      }
    }
    __pyx_L5:;
+8357:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_25 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8357, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8357, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_35);
          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
          __pyx_t_25 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8357, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_25);
          __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8357, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8357, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_39 = NULL;
          __pyx_t_27 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_35))) {
            __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_35);
            if (likely(__pyx_t_39)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_35);
              __Pyx_INCREF(__pyx_t_39);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_35, function);
              __pyx_t_27 = 1;
            }
          }
          __pyx_t_8 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8357, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          if (__pyx_t_39) {
            __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_39); __pyx_t_39 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_27, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_25);
          PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_27, __pyx_t_25);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_27, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_27, __pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_8, 5+__pyx_t_27, __pyx_t_7);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_8, 6+__pyx_t_27, __pyx_int_1);
          __pyx_t_25 = 0;
          __pyx_t_1 = 0;
          __pyx_t_7 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8357, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 8357, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_35 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_35 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_35);
            __Pyx_INCREF(__pyx_t_8);
            #else
            __pyx_t_35 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8357, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_35);
            __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8357, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8357, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_82 = Py_TYPE(__pyx_t_7)->tp_iternext;
            index = 0; __pyx_t_35 = __pyx_t_82(__pyx_t_7); if (unlikely(!__pyx_t_35)) goto __pyx_L36_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_35);
            index = 1; __pyx_t_8 = __pyx_t_82(__pyx_t_7); if (unlikely(!__pyx_t_8)) goto __pyx_L36_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_8);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_82(__pyx_t_7), 2) < 0) __PYX_ERR(0, 8357, __pyx_L1_error)
            __pyx_t_82 = NULL;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            goto __pyx_L37_unpacking_done;
            __pyx_L36_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_82 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 8357, __pyx_L1_error)
            __pyx_L37_unpacking_done:;
          }
          if (!(likely(((__pyx_t_35) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_35, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8357, __pyx_L1_error)
          if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8357, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_35);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8357, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_35));
          __pyx_t_35 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_8);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8357, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_8));
          __pyx_t_8 = 0;
+8358:                     w = 0
          __pyx_v_w = 0;
+8359:                     count = 0
          __pyx_v_count = 0;
+8360:                     while count < dp:
          while (1) {
            __pyx_t_24 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_24) break;
+8361:                         xt = xtrial[w]
            __pyx_t_111 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+8362:                         yt = ytrial[w]
            __pyx_t_112 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+8363:                         if I[xt, yt] == 0:
            __pyx_t_113 = __pyx_v_xt;
            __pyx_t_114 = __pyx_v_yt;
            __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_113, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_114, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_24) {
/* … */
            }
+8364:                             I[xt, yt] = p + count + 1
              __pyx_t_115 = __pyx_v_xt;
              __pyx_t_116 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_115, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_116, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8365:                             X[p + count] = xt
              __pyx_t_117 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_117, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8366:                             Y[p + count] = yt
              __pyx_t_118 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_118, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8367:                             a[p + count] = 1
              __pyx_t_119 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8368:                             MAJ[p + count] = 1
              __pyx_t_120 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8369:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, 1)
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8369, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_35 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8369, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8369, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_1 = __pyx_v_Thetafunc; __pyx_t_25 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_25)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_25);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_39 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8369, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              if (__pyx_t_25) {
                __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_25); __pyx_t_25 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_39, 0+__pyx_t_27, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_35);
              PyTuple_SET_ITEM(__pyx_t_39, 1+__pyx_t_27, __pyx_t_35);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_39, 2+__pyx_t_27, __pyx_t_7);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_39, 3+__pyx_t_27, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_39, 4+__pyx_t_27, __pyx_int_1);
              __pyx_t_8 = 0;
              __pyx_t_35 = 0;
              __pyx_t_7 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_39, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8369, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8369, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_121 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_36;
+8370:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, Theta[p + count], 1)
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8370, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8370, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_39);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8370, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_122 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_35 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_122, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8370, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_8 = __pyx_v_Adotfunc; __pyx_t_25 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_25 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_25)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_25);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_5 = PyTuple_New(5+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8370, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              if (__pyx_t_25) {
                __Pyx_GIVEREF(__pyx_t_25); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_25); __pyx_t_25 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_39);
              PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_39);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_27, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_35);
              PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_27, __pyx_t_35);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_27, __pyx_int_1);
              __pyx_t_1 = 0;
              __pyx_t_39 = 0;
              __pyx_t_7 = 0;
              __pyx_t_35 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8370, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_36 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_36 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8370, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_123 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_36;
+8371:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_124 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_125 = 0;
              __pyx_t_126 = __pyx_v_xt;
              __pyx_t_127 = __pyx_v_yt;
              __pyx_t_128 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_127, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_128, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_col.diminfo[1].strides));
+8372:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_129 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_130 = 1;
              __pyx_t_131 = __pyx_v_xt;
              __pyx_t_132 = __pyx_v_yt;
              __pyx_t_133 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_133, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_130, __pyx_pybuffernd_col.diminfo[1].strides));
+8373:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_134 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_135 = 2;
              __pyx_t_136 = __pyx_v_xt;
              __pyx_t_137 = __pyx_v_yt;
              __pyx_t_138 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_136, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_138, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_135, __pyx_pybuffernd_col.diminfo[1].strides));
+8374:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8375:                         if w < dp - 1:
            __pyx_t_24 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_24) {
/* … */
              goto __pyx_L41;
            }
+8376:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 8377:                         else:
+8378:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8378, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8378, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8378, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_35 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8378, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_35);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8378, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_39 = NULL;
              __pyx_t_27 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_39)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_39);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_27 = 1;
                }
              }
              __pyx_t_1 = PyTuple_New(7+__pyx_t_27); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8378, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__pyx_t_39) {
                __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_39); __pyx_t_39 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_27, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_27, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_27, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_27, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_35);
              PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_27, __pyx_t_35);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_1, 5+__pyx_t_27, __pyx_t_7);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_1, 6+__pyx_t_27, __pyx_int_1);
              __pyx_t_8 = 0;
              __pyx_t_35 = 0;
              __pyx_t_7 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8378, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 8378, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(__pyx_t_1);
                #else
                __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8378, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_5);
                __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8378, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_1);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8378, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_7);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_82 = Py_TYPE(__pyx_t_7)->tp_iternext;
                index = 0; __pyx_t_5 = __pyx_t_82(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L42_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_5);
                index = 1; __pyx_t_1 = __pyx_t_82(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L42_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_1);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_82(__pyx_t_7), 2) < 0) __PYX_ERR(0, 8378, __pyx_L1_error)
                __pyx_t_82 = NULL;
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
                goto __pyx_L43_unpacking_done;
                __pyx_L42_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
                __pyx_t_82 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 8378, __pyx_L1_error)
                __pyx_L43_unpacking_done:;
              }
              if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8378, __pyx_L1_error)
              if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8378, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_5);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8378, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_5));
              __pyx_t_5 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8378, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_1));
              __pyx_t_1 = 0;
+8379:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L41:;
          }
+8380:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8381: 
+8382:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+8383:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 8384: 
 8385: 
+8386:         adotValmax = 0
    __pyx_v_adotValmax = 0.0;
+8387:         for i in range(0, p):
    __pyx_t_139 = __pyx_v_p;
    for (__pyx_t_140 = 0; __pyx_t_140 < __pyx_t_139; __pyx_t_140+=1) {
      __pyx_v_i = __pyx_t_140;
+8388:             if a[i] == 1:
      __pyx_t_141 = __pyx_v_i;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_141, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+8389:                 tmp = adotVal[i]
        __pyx_t_142 = __pyx_v_i;
        __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_adotVal.diminfo[0].strides));
+8390:                 if tmp > adotValmax:
        __pyx_t_24 = ((__pyx_v_tmp > __pyx_v_adotValmax) != 0);
        if (__pyx_t_24) {
/* … */
        }
+8391:                     adotValmax = tmp
          __pyx_v_adotValmax = __pyx_v_tmp;
 8392: 
+8393:         for k in range(0, p):
    __pyx_t_139 = __pyx_v_p;
    for (__pyx_t_140 = 0; __pyx_t_140 < __pyx_t_139; __pyx_t_140+=1) {
      __pyx_v_k = __pyx_t_140;
+8394:             if a[k] == 1:
      __pyx_t_143 = __pyx_v_k;
      __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_24) {
/* … */
      }
    }
+8395:                 a[k] = 0
        __pyx_t_144 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_144, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+8396:                 xo = X[k]
        __pyx_t_145 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_X.diminfo[0].strides));
+8397:                 yo = Y[k]
        __pyx_t_146 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_146, __pyx_pybuffernd_Y.diminfo[0].strides));
+8398:                 Io = I[xo, yo]
        __pyx_t_147 = __pyx_v_xo;
        __pyx_t_148 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_148, __pyx_pybuffernd_I.diminfo[1].strides));
+8399:                 theta = Theta[k]
        __pyx_t_149 = __pyx_v_k;
        __pyx_v_theta = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_Theta.diminfo[0].strides));
+8400:                 c = math.cos(theta)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8400, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_cos); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8400, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8400, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (!__pyx_t_7) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8400, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_35 = PyTuple_New(1+1); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8400, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_35);
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_35, 0, __pyx_t_7); __pyx_t_7 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_35, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_35, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8400, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 8400, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_v_c = __pyx_t_3;
+8401:                 s = -math.sin(theta)
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8401, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_35 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sin); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8401, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_35);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8401, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_35))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_35);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_35);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_35, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_35, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8401, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8401, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
          __pyx_t_5 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_35, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8401, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        __pyx_t_35 = PyNumber_Negative(__pyx_t_6); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8401, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_35);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_35); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 8401, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        __pyx_v_s = __pyx_t_3;
+8402:                 dr = adotVal[k] / adotValmax
        __pyx_t_150 = __pyx_v_k;
        __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_adotVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_adotValmax));
+8403:                 MAJ[k] = MAJ[k] + dr
        __pyx_t_151 = __pyx_v_k;
        __pyx_t_152 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_152, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + __pyx_v_dr);
+8404:                 Maj = MAJ[k]
        __pyx_t_153 = __pyx_v_k;
        __pyx_v_Maj = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_MAJ.diminfo[0].strides));
+8405:                 Min = Maj / R
        __pyx_v_Min = (__pyx_v_Maj / __pyx_v_R);
+8406:                 delX = math.ceil(math.sqrt((Maj * c) ** 2 + (Min * s) ** 2))
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8406, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8406, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8406, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8406, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = PyFloat_FromDouble((powf((__pyx_v_Maj * __pyx_v_c), 2.0) + powf((__pyx_v_Min * __pyx_v_s), 2.0))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8406, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8406, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_39 = PyTuple_New(1+1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_39);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_39, 0+1, __pyx_t_5);
          __pyx_t_5 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_39, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_35 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8406, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_35);
        } else {
          __pyx_t_39 = PyTuple_New(1+1); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_39);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_39, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_39, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_39, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_35);
          __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_154 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_35); if (unlikely((__pyx_t_154 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8406, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        __pyx_v_delX = __pyx_t_154;
+8407:                 delY = math.ceil(math.sqrt((Maj * s) ** 2 + (Min * c) ** 2))
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8407, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_39 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ceil); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8407, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_39);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8407, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8407, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyFloat_FromDouble((powf((__pyx_v_Maj * __pyx_v_s), 2.0) + powf((__pyx_v_Min * __pyx_v_c), 2.0))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8407, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_5) {
          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8407, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_7);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8407, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8407, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_39))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_39);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_39);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_39, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_35 = __Pyx_PyObject_CallOneArg(__pyx_t_39, __pyx_t_7); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8407, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_35);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8407, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7);
          __pyx_t_7 = 0;
          __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_39, __pyx_t_8, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8407, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_35);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
        __pyx_t_154 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_35); if (unlikely((__pyx_t_154 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8407, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
        __pyx_v_delY = __pyx_t_154;
+8408:                 red = col[k, 0]
        __pyx_t_154 = __pyx_v_k;
        __pyx_t_155 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_155, __pyx_pybuffernd_col.diminfo[1].strides));
+8409:                 green = col[k, 1]
        __pyx_t_156 = __pyx_v_k;
        __pyx_t_157 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_157, __pyx_pybuffernd_col.diminfo[1].strides));
+8410:                 blue = col[k, 2]
        __pyx_t_158 = __pyx_v_k;
        __pyx_t_159 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_158, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_159, __pyx_pybuffernd_col.diminfo[1].strides));
 8411: 
+8412:                 for deli in range(0, delX + 1):
        __pyx_t_160 = (__pyx_v_delX + 1);
        for (__pyx_t_161 = 0; __pyx_t_161 < __pyx_t_160; __pyx_t_161+=1) {
          __pyx_v_deli = __pyx_t_161;
+8413:                     for delj in range(0, delY + 1):
          __pyx_t_162 = (__pyx_v_delY + 1);
          for (__pyx_t_163 = 0; __pyx_t_163 < __pyx_t_162; __pyx_t_163+=1) {
            __pyx_v_delj = __pyx_t_163;
+8414:                         if ((deli * c - delj * s) / Maj) ** 2 + ((deli * s + delj * c) / Min) ** 2 < 1:
            __pyx_t_24 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_Maj), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_Min), 2.0)) < 1.0) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
        }
 8415: 
+8416:                             i, j = xo + deli, yo + delj
              __pyx_t_164 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_165 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_164;
              __pyx_v_j = __pyx_t_165;
+8417:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_166 = (__pyx_t_26 != 0);
              if (__pyx_t_166) {
              } else {
                __pyx_t_24 = __pyx_t_166;
                goto __pyx_L57_bool_binop_done;
              }
              __pyx_t_166 = (0 <= __pyx_v_j);
              if (__pyx_t_166) {
                __pyx_t_166 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_166 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L57_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+8418:                                 if I[i, j] == 0:
                __pyx_t_165 = __pyx_v_i;
                __pyx_t_164 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_165, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_164, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+8419:                                     for dum in range(1):
                  for (__pyx_t_167 = 0; __pyx_t_167 < 1; __pyx_t_167+=1) {
                    __pyx_v_dum = __pyx_t_167;
 8420: 
+8421:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8422:                                             if  I[i - 1, j] == Io:
                      __pyx_t_168 = (__pyx_v_i - 1);
                      __pyx_t_169 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_168, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_169, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8423:                                                 I[i, j] = Io
                        __pyx_t_170 = __pyx_v_i;
                        __pyx_t_171 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_171, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8424:                                                 Col[i, j, 2] = red
                        __pyx_t_172 = __pyx_v_i;
                        __pyx_t_173 = __pyx_v_j;
                        __pyx_t_174 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_172, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_173, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_174, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8425:                                                 Col[i, j, 1] = green
                        __pyx_t_175 = __pyx_v_i;
                        __pyx_t_176 = __pyx_v_j;
                        __pyx_t_177 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_175, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_176, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_177, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8426:                                                 Col[i, j, 0] = blue
                        __pyx_t_178 = __pyx_v_i;
                        __pyx_t_179 = __pyx_v_j;
                        __pyx_t_180 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_178, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_179, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_180, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8427:                                                 a[k] = 1
                        __pyx_t_181 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_181, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8428:                                                 break
                        goto __pyx_L61_break;
+8429:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8430:                                             if I[i, j - 1] == Io:
                      __pyx_t_182 = __pyx_v_i;
                      __pyx_t_183 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_183, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8431:                                                 I[i, j] = Io
                        __pyx_t_184 = __pyx_v_i;
                        __pyx_t_185 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_185, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8432:                                                 Col[i, j, 2] = red
                        __pyx_t_186 = __pyx_v_i;
                        __pyx_t_187 = __pyx_v_j;
                        __pyx_t_188 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_186, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_187, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_188, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8433:                                                 Col[i, j, 1] = green
                        __pyx_t_189 = __pyx_v_i;
                        __pyx_t_190 = __pyx_v_j;
                        __pyx_t_191 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_189, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_190, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_191, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8434:                                                 Col[i, j, 0] = blue
                        __pyx_t_192 = __pyx_v_i;
                        __pyx_t_193 = __pyx_v_j;
                        __pyx_t_194 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_192, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_193, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_194, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8435:                                                 a[k] = 1
                        __pyx_t_195 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_195, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8436:                                                 break
                        goto __pyx_L61_break;
 8437: 
+8438:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8439:                                             if I[i, j + 1] == Io:
                      __pyx_t_196 = __pyx_v_i;
                      __pyx_t_197 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_196, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_197, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8440:                                                 I[i, j] = Io
                        __pyx_t_198 = __pyx_v_i;
                        __pyx_t_199 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_199, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8441:                                                 Col[i, j, 2] = red
                        __pyx_t_200 = __pyx_v_i;
                        __pyx_t_201 = __pyx_v_j;
                        __pyx_t_202 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_200, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_201, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_202, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8442:                                                 Col[i, j, 1] = green
                        __pyx_t_203 = __pyx_v_i;
                        __pyx_t_204 = __pyx_v_j;
                        __pyx_t_205 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_204, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_205, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8443:                                                 Col[i, j, 0] = blue
                        __pyx_t_206 = __pyx_v_i;
                        __pyx_t_207 = __pyx_v_j;
                        __pyx_t_208 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_206, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_207, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_208, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8444:                                                 a[k] = 1
                        __pyx_t_209 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_209, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8445:                                                 break
                        goto __pyx_L61_break;
 8446: 
 8447: 
+8448:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
                  }
                  __pyx_L61_break:;
+8449:                                             if  I[i + 1, j] == Io:
                      __pyx_t_210 = (__pyx_v_i + 1);
                      __pyx_t_211 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_210, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_211, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8450:                                                 I[i, j] = Io
                        __pyx_t_212 = __pyx_v_i;
                        __pyx_t_213 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_212, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_213, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8451:                                                 Col[i, j, 2] = red
                        __pyx_t_214 = __pyx_v_i;
                        __pyx_t_215 = __pyx_v_j;
                        __pyx_t_216 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_214, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_215, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_216, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8452:                                                 Col[i, j, 1] = green
                        __pyx_t_217 = __pyx_v_i;
                        __pyx_t_218 = __pyx_v_j;
                        __pyx_t_219 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_217, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_218, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_219, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8453:                                                 Col[i, j, 0] = blue
                        __pyx_t_220 = __pyx_v_i;
                        __pyx_t_221 = __pyx_v_j;
                        __pyx_t_222 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_220, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_221, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_222, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8454:                                                 a[k] = 1
                        __pyx_t_223 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_223, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8455:                                                 break
                        goto __pyx_L61_break;
 8456: 
 8457: 
+8458:                             i, j = xo - deli, yo - delj
              __pyx_t_167 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_224 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_167;
              __pyx_v_j = __pyx_t_224;
+8459:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_166 = (__pyx_t_26 != 0);
              if (__pyx_t_166) {
              } else {
                __pyx_t_24 = __pyx_t_166;
                goto __pyx_L71_bool_binop_done;
              }
              __pyx_t_166 = (0 <= __pyx_v_j);
              if (__pyx_t_166) {
                __pyx_t_166 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_166 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L71_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+8460:                                 if I[i, j] == 0:
                __pyx_t_224 = __pyx_v_i;
                __pyx_t_167 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_224, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_167, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+8461:                                     for dum in range(1):
                  for (__pyx_t_225 = 0; __pyx_t_225 < 1; __pyx_t_225+=1) {
                    __pyx_v_dum = __pyx_t_225;
 8462: 
+8463:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8464:                                             if  I[i - 1, j] == Io:
                      __pyx_t_226 = (__pyx_v_i - 1);
                      __pyx_t_227 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_226, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_227, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8465:                                                 I[i, j] = Io
                        __pyx_t_228 = __pyx_v_i;
                        __pyx_t_229 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_228, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_229, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8466:                                                 Col[i, j, 2] = red
                        __pyx_t_230 = __pyx_v_i;
                        __pyx_t_231 = __pyx_v_j;
                        __pyx_t_232 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_230, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_232, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8467:                                                 Col[i, j, 1] = green
                        __pyx_t_233 = __pyx_v_i;
                        __pyx_t_234 = __pyx_v_j;
                        __pyx_t_235 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_233, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_234, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_235, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8468:                                                 Col[i, j, 0] = blue
                        __pyx_t_236 = __pyx_v_i;
                        __pyx_t_237 = __pyx_v_j;
                        __pyx_t_238 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_236, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_237, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_238, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8469:                                                 a[k] = 1
                        __pyx_t_239 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_239, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8470:                                                 break
                        goto __pyx_L75_break;
+8471:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8472:                                             if I[i, j - 1] == Io:
                      __pyx_t_240 = __pyx_v_i;
                      __pyx_t_241 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_240, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_241, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8473:                                                 I[i, j] = Io
                        __pyx_t_242 = __pyx_v_i;
                        __pyx_t_243 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_242, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_243, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8474:                                                 Col[i, j, 2] = red
                        __pyx_t_244 = __pyx_v_i;
                        __pyx_t_245 = __pyx_v_j;
                        __pyx_t_246 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_244, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_245, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_246, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8475:                                                 Col[i, j, 1] = green
                        __pyx_t_247 = __pyx_v_i;
                        __pyx_t_248 = __pyx_v_j;
                        __pyx_t_249 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_247, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_248, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_249, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8476:                                                 Col[i, j, 0] = blue
                        __pyx_t_250 = __pyx_v_i;
                        __pyx_t_251 = __pyx_v_j;
                        __pyx_t_252 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_250, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_251, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_252, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8477:                                                 a[k] = 1
                        __pyx_t_253 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_253, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8478:                                                 break
                        goto __pyx_L75_break;
 8479: 
+8480:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8481:                                             if I[i, j + 1] == Io:
                      __pyx_t_254 = __pyx_v_i;
                      __pyx_t_255 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_254, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_255, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8482:                                                 I[i, j] = Io
                        __pyx_t_256 = __pyx_v_i;
                        __pyx_t_257 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_256, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_257, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8483:                                                 Col[i, j, 2] = red
                        __pyx_t_258 = __pyx_v_i;
                        __pyx_t_259 = __pyx_v_j;
                        __pyx_t_260 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_258, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_259, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_260, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8484:                                                 Col[i, j, 1] = green
                        __pyx_t_261 = __pyx_v_i;
                        __pyx_t_262 = __pyx_v_j;
                        __pyx_t_263 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_261, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_262, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_263, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8485:                                                 Col[i, j, 0] = blue
                        __pyx_t_264 = __pyx_v_i;
                        __pyx_t_265 = __pyx_v_j;
                        __pyx_t_266 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_264, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_265, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_266, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8486:                                                 a[k] = 1
                        __pyx_t_267 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_267, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8487:                                                 break
                        goto __pyx_L75_break;
 8488: 
 8489: 
+8490:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
                  }
                  __pyx_L75_break:;
+8491:                                             if  I[i + 1, j] == Io:
                      __pyx_t_268 = (__pyx_v_i + 1);
                      __pyx_t_269 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_268, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_269, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8492:                                                 I[i, j] = Io
                        __pyx_t_270 = __pyx_v_i;
                        __pyx_t_271 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_270, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_271, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8493:                                                 Col[i, j, 2] = red
                        __pyx_t_272 = __pyx_v_i;
                        __pyx_t_273 = __pyx_v_j;
                        __pyx_t_274 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_272, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_273, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_274, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8494:                                                 Col[i, j, 1] = green
                        __pyx_t_275 = __pyx_v_i;
                        __pyx_t_276 = __pyx_v_j;
                        __pyx_t_277 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_275, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_276, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_277, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8495:                                                 Col[i, j, 0] = blue
                        __pyx_t_278 = __pyx_v_i;
                        __pyx_t_279 = __pyx_v_j;
                        __pyx_t_280 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_278, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_279, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_280, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8496:                                                 a[k] = 1
                        __pyx_t_281 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_281, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8497:                                                 break
                        goto __pyx_L75_break;
 8498: 
+8499:                 for deli in range(0, -delX - 1, -1):
        __pyx_t_160 = ((-__pyx_v_delX) - 1);
        for (__pyx_t_161 = 0; __pyx_t_161 > __pyx_t_160; __pyx_t_161-=1) {
          __pyx_v_deli = __pyx_t_161;
+8500:                     for delj in range(0, delY + 1):
          __pyx_t_162 = (__pyx_v_delY + 1);
          for (__pyx_t_163 = 0; __pyx_t_163 < __pyx_t_162; __pyx_t_163+=1) {
            __pyx_v_delj = __pyx_t_163;
+8501:                         if ((deli * c - delj * s) / Maj) ** 2 + ((deli * s + delj * c) / Min) ** 2 < 1:
            __pyx_t_24 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_Maj), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_Min), 2.0)) < 1.0) != 0);
            if (__pyx_t_24) {
/* … */
            }
          }
        }
 8502: 
+8503:                             i, j = xo + deli, yo + delj
              __pyx_t_225 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_282 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_225;
              __pyx_v_j = __pyx_t_282;
+8504:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_166 = (__pyx_t_26 != 0);
              if (__pyx_t_166) {
              } else {
                __pyx_t_24 = __pyx_t_166;
                goto __pyx_L90_bool_binop_done;
              }
              __pyx_t_166 = (0 <= __pyx_v_j);
              if (__pyx_t_166) {
                __pyx_t_166 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_166 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L90_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+8505:                                 if I[i, j] == 0:
                __pyx_t_282 = __pyx_v_i;
                __pyx_t_225 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_282, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_225, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+8506:                                     for dum in range(1):
                  for (__pyx_t_283 = 0; __pyx_t_283 < 1; __pyx_t_283+=1) {
                    __pyx_v_dum = __pyx_t_283;
 8507: 
+8508:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8509:                                             if  I[i - 1, j] == Io:
                      __pyx_t_284 = (__pyx_v_i - 1);
                      __pyx_t_285 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_285, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8510:                                                 I[i, j] = Io
                        __pyx_t_286 = __pyx_v_i;
                        __pyx_t_287 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_286, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_287, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8511:                                                 Col[i, j, 2] = red
                        __pyx_t_288 = __pyx_v_i;
                        __pyx_t_289 = __pyx_v_j;
                        __pyx_t_290 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_288, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_289, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_290, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8512:                                                 Col[i, j, 1] = green
                        __pyx_t_291 = __pyx_v_i;
                        __pyx_t_292 = __pyx_v_j;
                        __pyx_t_293 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_291, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_292, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_293, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8513:                                                 Col[i, j, 0] = blue
                        __pyx_t_294 = __pyx_v_i;
                        __pyx_t_295 = __pyx_v_j;
                        __pyx_t_296 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_294, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_295, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_296, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8514:                                                 a[k] = 1
                        __pyx_t_297 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_297, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8515:                                                 break
                        goto __pyx_L94_break;
+8516:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8517:                                             if I[i, j - 1] == Io:
                      __pyx_t_298 = __pyx_v_i;
                      __pyx_t_299 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_298, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_299, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8518:                                                 I[i, j] = Io
                        __pyx_t_300 = __pyx_v_i;
                        __pyx_t_301 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_300, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_301, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8519:                                                 Col[i, j, 2] = red
                        __pyx_t_302 = __pyx_v_i;
                        __pyx_t_303 = __pyx_v_j;
                        __pyx_t_304 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_302, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_303, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_304, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8520:                                                 Col[i, j, 1] = green
                        __pyx_t_305 = __pyx_v_i;
                        __pyx_t_306 = __pyx_v_j;
                        __pyx_t_307 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_305, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_306, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_307, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8521:                                                 Col[i, j, 0] = blue
                        __pyx_t_308 = __pyx_v_i;
                        __pyx_t_309 = __pyx_v_j;
                        __pyx_t_310 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_308, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_309, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_310, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8522:                                                 a[k] = 1
                        __pyx_t_311 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_311, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8523:                                                 break
                        goto __pyx_L94_break;
 8524: 
+8525:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8526:                                             if I[i, j + 1] == Io:
                      __pyx_t_312 = __pyx_v_i;
                      __pyx_t_313 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_312, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_313, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8527:                                                 I[i, j] = Io
                        __pyx_t_314 = __pyx_v_i;
                        __pyx_t_315 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_314, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_315, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8528:                                                 Col[i, j, 2] = red
                        __pyx_t_316 = __pyx_v_i;
                        __pyx_t_317 = __pyx_v_j;
                        __pyx_t_318 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_316, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_317, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_318, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8529:                                                 Col[i, j, 1] = green
                        __pyx_t_319 = __pyx_v_i;
                        __pyx_t_320 = __pyx_v_j;
                        __pyx_t_321 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_319, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_320, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_321, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8530:                                                 Col[i, j, 0] = blue
                        __pyx_t_322 = __pyx_v_i;
                        __pyx_t_323 = __pyx_v_j;
                        __pyx_t_324 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_322, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_323, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_324, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8531:                                                 a[k] = 1
                        __pyx_t_325 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_325, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8532:                                                 break
                        goto __pyx_L94_break;
 8533: 
 8534: 
+8535:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
                  }
                  __pyx_L94_break:;
+8536:                                             if  I[i + 1, j] == Io:
                      __pyx_t_326 = (__pyx_v_i + 1);
                      __pyx_t_327 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_326, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_327, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8537:                                                 I[i, j] = Io
                        __pyx_t_328 = __pyx_v_i;
                        __pyx_t_329 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_328, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_329, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8538:                                                 Col[i, j, 2] = red
                        __pyx_t_330 = __pyx_v_i;
                        __pyx_t_331 = __pyx_v_j;
                        __pyx_t_332 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_330, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_331, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_332, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8539:                                                 Col[i, j, 1] = green
                        __pyx_t_333 = __pyx_v_i;
                        __pyx_t_334 = __pyx_v_j;
                        __pyx_t_335 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_333, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_334, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_335, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8540:                                                 Col[i, j, 0] = blue
                        __pyx_t_336 = __pyx_v_i;
                        __pyx_t_337 = __pyx_v_j;
                        __pyx_t_338 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_336, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_337, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_338, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8541:                                                 a[k] = 1
                        __pyx_t_339 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_339, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8542:                                                 break
                        goto __pyx_L94_break;
 8543: 
 8544: 
+8545:                             i, j = xo - deli, yo - delj
              __pyx_t_283 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_340 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_283;
              __pyx_v_j = __pyx_t_340;
+8546:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_26 = (0 <= __pyx_v_i);
              if (__pyx_t_26) {
                __pyx_t_26 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_166 = (__pyx_t_26 != 0);
              if (__pyx_t_166) {
              } else {
                __pyx_t_24 = __pyx_t_166;
                goto __pyx_L104_bool_binop_done;
              }
              __pyx_t_166 = (0 <= __pyx_v_j);
              if (__pyx_t_166) {
                __pyx_t_166 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_26 = (__pyx_t_166 != 0);
              __pyx_t_24 = __pyx_t_26;
              __pyx_L104_bool_binop_done:;
              if (__pyx_t_24) {
/* … */
              }
+8547:                                 if I[i, j] == 0:
                __pyx_t_340 = __pyx_v_i;
                __pyx_t_283 = __pyx_v_j;
                __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_340, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_283, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_24) {
/* … */
                }
+8548:                                     for dum in range(1):
                  for (__pyx_t_341 = 0; __pyx_t_341 < 1; __pyx_t_341+=1) {
                    __pyx_v_dum = __pyx_t_341;
 8549: 
+8550:                                         if i > 0:
                    __pyx_t_24 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8551:                                             if  I[i - 1, j] == Io:
                      __pyx_t_342 = (__pyx_v_i - 1);
                      __pyx_t_343 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_342, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_343, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8552:                                                 I[i, j] = Io
                        __pyx_t_344 = __pyx_v_i;
                        __pyx_t_345 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_344, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_345, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8553:                                                 Col[i, j, 2] = red
                        __pyx_t_346 = __pyx_v_i;
                        __pyx_t_347 = __pyx_v_j;
                        __pyx_t_348 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_346, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_347, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_348, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8554:                                                 Col[i, j, 1] = green
                        __pyx_t_349 = __pyx_v_i;
                        __pyx_t_350 = __pyx_v_j;
                        __pyx_t_351 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_349, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_350, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_351, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8555:                                                 Col[i, j, 0] = blue
                        __pyx_t_352 = __pyx_v_i;
                        __pyx_t_353 = __pyx_v_j;
                        __pyx_t_354 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_352, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_353, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_354, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8556:                                                 a[k] = 1
                        __pyx_t_355 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_355, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8557:                                                 break
                        goto __pyx_L108_break;
+8558:                                         if j > 0:
                    __pyx_t_24 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8559:                                             if I[i, j - 1] == Io:
                      __pyx_t_356 = __pyx_v_i;
                      __pyx_t_357 = (__pyx_v_j - 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_356, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_357, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8560:                                                 I[i, j] = Io
                        __pyx_t_358 = __pyx_v_i;
                        __pyx_t_359 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_358, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_359, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8561:                                                 Col[i, j, 2] = red
                        __pyx_t_360 = __pyx_v_i;
                        __pyx_t_361 = __pyx_v_j;
                        __pyx_t_362 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_360, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_361, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_362, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8562:                                                 Col[i, j, 1] = green
                        __pyx_t_363 = __pyx_v_i;
                        __pyx_t_364 = __pyx_v_j;
                        __pyx_t_365 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_363, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_364, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_365, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8563:                                                 Col[i, j, 0] = blue
                        __pyx_t_366 = __pyx_v_i;
                        __pyx_t_367 = __pyx_v_j;
                        __pyx_t_368 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_366, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_367, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_368, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8564:                                                 a[k] = 1
                        __pyx_t_369 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_369, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8565:                                                 break
                        goto __pyx_L108_break;
 8566: 
+8567:                                         if j < n - 1:
                    __pyx_t_24 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
+8568:                                             if I[i, j + 1] == Io:
                      __pyx_t_370 = __pyx_v_i;
                      __pyx_t_371 = (__pyx_v_j + 1);
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_370, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_371, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8569:                                                 I[i, j] = Io
                        __pyx_t_372 = __pyx_v_i;
                        __pyx_t_373 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_372, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_373, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8570:                                                 Col[i, j, 2] = red
                        __pyx_t_374 = __pyx_v_i;
                        __pyx_t_375 = __pyx_v_j;
                        __pyx_t_376 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_374, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_375, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_376, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8571:                                                 Col[i, j, 1] = green
                        __pyx_t_377 = __pyx_v_i;
                        __pyx_t_378 = __pyx_v_j;
                        __pyx_t_379 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_377, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_378, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_379, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8572:                                                 Col[i, j, 0] = blue
                        __pyx_t_380 = __pyx_v_i;
                        __pyx_t_381 = __pyx_v_j;
                        __pyx_t_382 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_380, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_381, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_382, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8573:                                                 a[k] = 1
                        __pyx_t_383 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_383, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8574:                                                 break
                        goto __pyx_L108_break;
 8575: 
 8576: 
+8577:                                         if i < m - 1:
                    __pyx_t_24 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_24) {
/* … */
                    }
                  }
                  __pyx_L108_break:;
+8578:                                             if  I[i + 1, j] == Io:
                      __pyx_t_384 = (__pyx_v_i + 1);
                      __pyx_t_385 = __pyx_v_j;
                      __pyx_t_24 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_384, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_385, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_24) {
/* … */
                      }
+8579:                                                 I[i, j] = Io
                        __pyx_t_386 = __pyx_v_i;
                        __pyx_t_387 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_386, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_387, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8580:                                                 Col[i, j, 2] = red
                        __pyx_t_388 = __pyx_v_i;
                        __pyx_t_389 = __pyx_v_j;
                        __pyx_t_390 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_388, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_389, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_390, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8581:                                                 Col[i, j, 1] = green
                        __pyx_t_391 = __pyx_v_i;
                        __pyx_t_392 = __pyx_v_j;
                        __pyx_t_393 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_391, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_392, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_393, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8582:                                                 Col[i, j, 0] = blue
                        __pyx_t_394 = __pyx_v_i;
                        __pyx_t_395 = __pyx_v_j;
                        __pyx_t_396 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_394, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_395, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_396, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8583:                                                 a[k] = 1
                        __pyx_t_397 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_397, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8584:                                                 break
                        goto __pyx_L108_break;
 8585: 
 8586: 
 8587: 
+8588:                 if a[k] == 0:
        __pyx_t_160 = __pyx_v_k;
        __pyx_t_24 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
        if (__pyx_t_24) {
/* … */
        }
+8589:                     xmin = max(0, xo - delX)
          __pyx_t_161 = (__pyx_v_xo - __pyx_v_delX);
          __pyx_t_398 = 0;
          if (((__pyx_t_161 > __pyx_t_398) != 0)) {
            __pyx_t_162 = __pyx_t_161;
          } else {
            __pyx_t_162 = __pyx_t_398;
          }
          __pyx_v_xmin = __pyx_t_162;
+8590:                     xmax = min(m - 1, xo + delX)
          __pyx_t_162 = (__pyx_v_xo + __pyx_v_delX);
          __pyx_t_161 = (__pyx_v_m - 1);
          if (((__pyx_t_162 < __pyx_t_161) != 0)) {
            __pyx_t_163 = __pyx_t_162;
          } else {
            __pyx_t_163 = __pyx_t_161;
          }
          __pyx_v_xmax = __pyx_t_163;
+8591:                     ymin = max(0, yo - delY)
          __pyx_t_163 = (__pyx_v_yo - __pyx_v_delY);
          __pyx_t_398 = 0;
          if (((__pyx_t_163 > __pyx_t_398) != 0)) {
            __pyx_t_162 = __pyx_t_163;
          } else {
            __pyx_t_162 = __pyx_t_398;
          }
          __pyx_v_ymin = __pyx_t_162;
+8592:                     ymax = min(n - 1, yo + delY)
          __pyx_t_162 = (__pyx_v_yo + __pyx_v_delY);
          __pyx_t_163 = (__pyx_v_n - 1);
          if (((__pyx_t_162 < __pyx_t_163) != 0)) {
            __pyx_t_161 = __pyx_t_162;
          } else {
            __pyx_t_161 = __pyx_t_163;
          }
          __pyx_v_ymax = __pyx_t_161;
+8593:                     a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
          __pyx_t_161 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_161, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 8594: 
 8595: 
+8596:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+8597:         nnz = cv2.countNonZero(I)
    __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_39);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
    __pyx_t_39 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_39)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_39);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    if (!__pyx_t_39) {
      __pyx_t_35 = __Pyx_PyObject_CallOneArg(__pyx_t_8, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_35);
    } else {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_39); __pyx_t_39 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_35);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_139 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_35); if (unlikely((__pyx_t_139 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8597, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
    __pyx_v_nnz = __pyx_t_139;
  }
 8598: 
 8599: 
+8600:     obj.p = p
  __pyx_t_35 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_35) < 0) __PYX_ERR(0, 8600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+8601:     toc = time.time()
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_35 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8601, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_35 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8601, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_t_35); if (unlikely((__pyx_t_23 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 8601, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
  __pyx_v_toc = __pyx_t_23;
+8602:     obj.exetime = toc - tic
  __pyx_t_35 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_35) < 0) __PYX_ERR(0, 8602, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+8603:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_delete); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_39 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_39, __pyx_n_s_arange); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
  __pyx_t_39 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_39);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  if (__pyx_t_5) {
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_5); __pyx_t_5 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_39);
  PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, __pyx_t_39);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_6);
  __pyx_t_39 = 0;
  __pyx_t_6 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_25, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_25 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_25, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_25, 0+__pyx_t_27, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_25, 1+__pyx_t_27, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_25, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_35) < 0) __PYX_ERR(0, 8603, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+8604:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_delete); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_arange); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_39 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_39 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_39)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_39);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_39) {
    __Pyx_GIVEREF(__pyx_t_39); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_39); __pyx_t_39 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_6);
  __pyx_t_7 = 0;
  __pyx_t_6 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  __pyx_t_27 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_25))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_25);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_25, function);
      __pyx_t_27 = 1;
    }
  }
  __pyx_t_5 = PyTuple_New(2+__pyx_t_27); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_27, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_27, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_35 = __Pyx_PyObject_Call(__pyx_t_25, __pyx_t_5, NULL); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_35);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_35) < 0) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0;
+8605:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 8605, __pyx_L1_error)
+8606:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 8606, __pyx_L1_error)
+8607:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 8608: 
 8609: 
 8610: 
+8611: def Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_59Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_59Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot = {"Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot", (PyCFunction)__pyx_pw_9libEVOLVE_59Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_59Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_58Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_58Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  PY_LONG_LONG __pyx_v_MN;
  float __pyx_v_fstop;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  PY_LONG_LONG __pyx_v_seq;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  PyObject *__pyx_v_Ndot = NULL;
  PyObject *__pyx_v_Gt = NULL;
  PyObject *__pyx_v_Thetafunc = NULL;
  PyObject *__pyx_v_Adotfunc = NULL;
  PyObject *__pyx_v_Rfunc = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_count;
  PY_LONG_LONG __pyx_v_dp;
  PY_LONG_LONG __pyx_v_nnz;
  PY_LONG_LONG __pyx_v_countim;
  PY_LONG_LONG __pyx_v_w;
  PY_LONG_LONG __pyx_v_xt;
  PY_LONG_LONG __pyx_v_yt;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_delX;
  PY_LONG_LONG __pyx_v_delY;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  CYTHON_UNUSED PY_LONG_LONG __pyx_v_dum;
  PY_LONG_LONG __pyx_v_Iter;
  float __pyx_v_dt;
  float __pyx_v_f;
  float __pyx_v_t;
  float __pyx_v_tmp;
  float __pyx_v_Min;
  float __pyx_v_Maj;
  float __pyx_v_theta;
  float __pyx_v_c;
  float __pyx_v_s;
  float __pyx_v_dr;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  PyArrayObject *__pyx_v_MAJ = 0;
  PyArrayObject *__pyx_v_xtrial = 0;
  PyArrayObject *__pyx_v_ytrial = 0;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_Theta = 0;
  PyArrayObject *__pyx_v_adotVal = 0;
  PyArrayObject *__pyx_v_Rval = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_col = 0;
  double __pyx_v_adotValmax;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_MAJ;
  __Pyx_Buffer __pyx_pybuffer_MAJ;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Rval;
  __Pyx_Buffer __pyx_pybuffer_Rval;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Theta;
  __Pyx_Buffer __pyx_pybuffer_Theta;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_adotVal;
  __Pyx_Buffer __pyx_pybuffer_adotVal;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_xtrial;
  __Pyx_Buffer __pyx_pybuffer_xtrial;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ytrial;
  __Pyx_Buffer __pyx_pybuffer_ytrial;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot", 0);
  __pyx_pybuffer_MAJ.pybuffer.buf = NULL;
  __pyx_pybuffer_MAJ.refcount = 0;
  __pyx_pybuffernd_MAJ.data = NULL;
  __pyx_pybuffernd_MAJ.rcbuffer = &__pyx_pybuffer_MAJ;
  __pyx_pybuffer_xtrial.pybuffer.buf = NULL;
  __pyx_pybuffer_xtrial.refcount = 0;
  __pyx_pybuffernd_xtrial.data = NULL;
  __pyx_pybuffernd_xtrial.rcbuffer = &__pyx_pybuffer_xtrial;
  __pyx_pybuffer_ytrial.pybuffer.buf = NULL;
  __pyx_pybuffer_ytrial.refcount = 0;
  __pyx_pybuffernd_ytrial.data = NULL;
  __pyx_pybuffernd_ytrial.rcbuffer = &__pyx_pybuffer_ytrial;
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_Theta.pybuffer.buf = NULL;
  __pyx_pybuffer_Theta.refcount = 0;
  __pyx_pybuffernd_Theta.data = NULL;
  __pyx_pybuffernd_Theta.rcbuffer = &__pyx_pybuffer_Theta;
  __pyx_pybuffer_adotVal.pybuffer.buf = NULL;
  __pyx_pybuffer_adotVal.refcount = 0;
  __pyx_pybuffernd_adotVal.data = NULL;
  __pyx_pybuffernd_adotVal.rcbuffer = &__pyx_pybuffer_adotVal;
  __pyx_pybuffer_Rval.pybuffer.buf = NULL;
  __pyx_pybuffer_Rval.refcount = 0;
  __pyx_pybuffernd_Rval.data = NULL;
  __pyx_pybuffernd_Rval.rcbuffer = &__pyx_pybuffer_Rval;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_26);
  __Pyx_XDECREF(__pyx_t_36);
  __Pyx_XDECREF(__pyx_t_40);
  __Pyx_XDECREF(__pyx_t_44);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF(__pyx_v_Ndot);
  __Pyx_XDECREF(__pyx_v_Gt);
  __Pyx_XDECREF(__pyx_v_Thetafunc);
  __Pyx_XDECREF(__pyx_v_Adotfunc);
  __Pyx_XDECREF(__pyx_v_Rfunc);
  __Pyx_XDECREF((PyObject *)__pyx_v_MAJ);
  __Pyx_XDECREF((PyObject *)__pyx_v_xtrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_ytrial);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_Theta);
  __Pyx_XDECREF((PyObject *)__pyx_v_adotVal);
  __Pyx_XDECREF((PyObject *)__pyx_v_Rval);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__69 = PyTuple_Pack(74, __pyx_n_s_obj, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_MN, __pyx_n_s_fstop, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_seq, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_Ndot, __pyx_n_s_Gt, __pyx_n_s_Thetafunc, __pyx_n_s_Adotfunc, __pyx_n_s_Rfunc, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_p, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_Io, __pyx_n_s_count, __pyx_n_s_dp, __pyx_n_s_nnz, __pyx_n_s_rad, __pyx_n_s_countim, __pyx_n_s_w, __pyx_n_s_xt, __pyx_n_s_yt, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_k, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_delX, __pyx_n_s_delY, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax, __pyx_n_s_dum, __pyx_n_s_Iter, __pyx_n_s_dt, __pyx_n_s_f, __pyx_n_s_t, __pyx_n_s_tmp, __pyx_n_s_Min, __pyx_n_s_Maj, __pyx_n_s_theta, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_dr, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_MAJ, __pyx_n_s_xtrial, __pyx_n_s_ytrial, __pyx_n_s_I, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_Theta, __pyx_n_s_adotVal, __pyx_n_s_Rval, __pyx_n_s_Col, __pyx_n_s_col, __pyx_n_s_adotValmax); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 8611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__69);
  __Pyx_GIVEREF(__pyx_tuple__69);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_59Evolve_2D_Anisotropic_Continuous_Generic_Elliptical_with_aspect_with_theta_with_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_12, __pyx_t_2) < 0) __PYX_ERR(0, 8611, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(1, 0, 74, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__69, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_E_Dropbox_Public_PhDResources_10, __pyx_n_s_Evolve_2D_Anisotropic_Continuous_12, 8611, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 8611, __pyx_L1_error)
 8612:     # Grabbing data from the input object
+8613:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8613, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+8614:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8614, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+8615:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8615, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+8616:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8616, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8616, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+8617:     cdef long long MN = m * n
  __pyx_v_MN = (__pyx_v_m * __pyx_v_n);
+8618:     cdef float fstop = obj.fstop
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fstop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 8618, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_fstop = __pyx_t_3;
+8619:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8619, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+8620:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8620, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_4;
+8621:     cdef long long seq = obj.seq
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_seq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8621, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_seq = __pyx_t_2;
+8622:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+8623:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
+8624:     Ndot = obj.Ndot
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Ndot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Ndot = __pyx_t_1;
  __pyx_t_1 = 0;
+8625:     Gt = obj.Gt
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Gt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Gt = __pyx_t_1;
  __pyx_t_1 = 0;
+8626:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_fd, __pyx_t_1);
  __pyx_t_1 = 0;
+8627:     Thetafunc = obj.Thetafunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Thetafunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Thetafunc = __pyx_t_1;
  __pyx_t_1 = 0;
+8628:     Adotfunc = obj.Adotfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Adotfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Adotfunc = __pyx_t_1;
  __pyx_t_1 = 0;
+8629:     Rfunc = obj.Rfunc
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Rfunc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_Rfunc = __pyx_t_1;
  __pyx_t_1 = 0;
 8630: 
 8631:     # Declaring other variables
 8632:     cdef double tic, toc
 8633:     cdef long long p, deli, delj, PN, PE, PW, PS, Io, count, dp, nnz, rad, countim, w, xt, yt, i, j, k, xo, yo, delX, delY, xmin, xmax, ymin, ymax, dum, Iter
 8634:     cdef float dt, f, t, tmp, Min, Maj, theta, c, s, dr, red, green, blue
+8635:     cdef np.ndarray[np.float64_t, ndim = 1] MAJ = np.zeros(MN, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 8635, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8635, __pyx_L1_error)
  __pyx_t_9 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_MAJ.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_MAJ = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8635, __pyx_L1_error)
    } else {__pyx_pybuffernd_MAJ.diminfo[0].strides = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_MAJ.diminfo[0].shape = __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_9 = 0;
  __pyx_v_MAJ = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+8636:     cdef np.ndarray[np.int64_t, ndim = 1] xtrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8636, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_xtrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8636, __pyx_L1_error)
    } else {__pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_xtrial = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+8637:     cdef np.ndarray[np.int64_t, ndim = 1] ytrial = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 8637, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8637, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_ytrial = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8637, __pyx_L1_error)
    } else {__pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_ytrial = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+8638:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8638, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8638, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+8639:     cdef np.ndarray[np.int_t, ndim = 1] a = np.ones(MN, dtype=np.int)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_int); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 8639, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8639, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8639, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+8640:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(MN, dtype=np.int64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 8640, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8640, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8640, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+8641:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(MN, dtype=np.int64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8641, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8641, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+8642:     cdef np.ndarray[np.float64_t, ndim = 1] Theta = np.zeros(MN, dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 8642, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8642, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Theta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8642, __pyx_L1_error)
    } else {__pyx_pybuffernd_Theta.diminfo[0].strides = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Theta.diminfo[0].shape = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Theta = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+8643:     cdef np.ndarray[np.float64_t, ndim = 1] adotVal = np.zeros(MN, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8643, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_adotVal.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_adotVal = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8643, __pyx_L1_error)
    } else {__pyx_pybuffernd_adotVal.diminfo[0].strides = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_adotVal.diminfo[0].shape = __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_adotVal = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;
+8644:     cdef np.ndarray[np.float64_t, ndim = 1] Rval = np.zeros(MN, dtype=np.float64)
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 8644, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8644, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Rval.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Rval = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8644, __pyx_L1_error)
    } else {__pyx_pybuffernd_Rval.diminfo[0].strides = __pyx_pybuffernd_Rval.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Rval.diminfo[0].shape = __pyx_pybuffernd_Rval.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_Rval = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+8645:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8645, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8645, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_19 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+8646:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((MN, 3), dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 8646, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8646, __pyx_L1_error)
  __pyx_t_20 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_20, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 8646, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_20 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+8647:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8647, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8647, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8647, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+8648:     col = np.random.random((MN, 3))
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_random); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_3);
  __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8648, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_7);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8648, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8648, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8648, __pyx_L1_error)
  __pyx_t_20 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_20, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_v_col, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
      }
    }
    __pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8648, __pyx_L1_error)
  }
  __pyx_t_20 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, ((PyArrayObject *)__pyx_t_7));
  __pyx_t_7 = 0;
+8649:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_6) {
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8649, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else {
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8649, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_24 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_24 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 8649, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_tic = __pyx_t_24;
 8650: 
+8651:     t = 0
  __pyx_v_t = 0.0;
+8652:     p = 0
  __pyx_v_p = 0;
+8653:     dp = 0
  __pyx_v_dp = 0;
+8654:     countim = 0
  __pyx_v_countim = 0;
+8655:     nnz = 0
  __pyx_v_nnz = 0;
+8656:     Iter = 1
  __pyx_v_Iter = 1;
+8657:     while nnz < MN:
  while (1) {
    __pyx_t_25 = ((__pyx_v_nnz < __pyx_v_MN) != 0);
    if (!__pyx_t_25) break;
+8658:         f = nnz / MN
    __pyx_v_f = (__pyx_v_nnz / __pyx_v_MN);
+8659:         dt = 1.0 / Gt(t)
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8659, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_Gt);
    __pyx_t_6 = __pyx_v_Gt; __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8659, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_7);
    } else {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8659, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8659, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_0, __pyx_t_7, 1.0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8659, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 8659, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_dt = __pyx_t_3;
+8660:         dp = int((1 - f) * Ndot(t) * dt)
    __pyx_t_6 = PyFloat_FromDouble((1.0 - __pyx_v_f)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_Ndot);
    __pyx_t_1 = __pyx_v_Ndot; __pyx_t_8 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_8) {
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8660, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_7);
    } else {
      __pyx_t_26 = PyTuple_New(1+1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8660, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_26);
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_8); __pyx_t_8 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_26, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_26, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8660, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Multiply(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_7); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8660, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_dp = __pyx_t_2;
+8661:         t = t + dt
    __pyx_v_t = (__pyx_v_t + __pyx_v_dt);
+8662:         if pdelNxy == []:
    __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8662, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8662, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_25 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_25 < 0)) __PYX_ERR(0, 8662, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_25) {
/* … */
      goto __pyx_L5;
    }
+8663:             if seq == 1:
      switch (__pyx_v_seq) {
        case 1:
/* … */
        break;
+8664:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L7_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L7_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L7_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8665:                     count = 0
          __pyx_v_count = 0;
+8666:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8667:                         xt = np.random.randint(0, m - 1)
            __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8667, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8667, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_randint); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8667, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8667, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_26 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
              __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_7);
              if (likely(__pyx_t_26)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_26);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_7, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_5 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8667, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_26) {
              __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_26); __pyx_t_26 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8667, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8667, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_2;
+8668:                         yt = np.random.randint(0, n - 1)
            __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8668, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8668, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_randint); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8668, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8668, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_7, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_26 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8668, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            if (__pyx_t_1) {
              __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_1); __pyx_t_1 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8668, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8668, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_2;
+8669:                         if I[xt, yt] == 0:
            __pyx_t_2 = __pyx_v_xt;
            __pyx_t_29 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_29, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
+8670:                             I[xt, yt] = p + count + 1
              __pyx_t_30 = __pyx_v_xt;
              __pyx_t_31 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_30, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_31, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8671:                             X[p + count] = xt
              __pyx_t_32 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_32, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8672:                             Y[p + count] = yt
              __pyx_t_33 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_33, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8673:                             a[p + count] = 1
              __pyx_t_34 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8674:                             MAJ[p + count] = 1
              __pyx_t_35 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8675:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, 1)
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8675, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8675, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8675, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_1 = __pyx_v_Thetafunc; __pyx_t_8 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_8)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_8);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_36 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8675, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              if (__pyx_t_8) {
                __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_8); __pyx_t_8 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_36, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_36, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_36, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_7 = 0;
              __pyx_t_26 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8675, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8675, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_38 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8676:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, 1, Theta[p + count])
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8676, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8676, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8676, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_39 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_26 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8676, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_7 = __pyx_v_Rfunc; __pyx_t_8 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
                __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
                if (likely(__pyx_t_8)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                  __Pyx_INCREF(__pyx_t_8);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_7, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_40 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8676, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              if (__pyx_t_8) {
                __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_8); __pyx_t_8 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_40, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_40, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_40, 4+__pyx_t_28, __pyx_t_26);
              __pyx_t_1 = 0;
              __pyx_t_36 = 0;
              __pyx_t_5 = 0;
              __pyx_t_26 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8676, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8676, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_41 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_41, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8677:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, Theta[p + count], Rval[p + count])
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8677, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8677, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8677, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_42 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_42, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8677, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_43 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_36 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_43, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8677, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_1 = __pyx_v_Adotfunc; __pyx_t_8 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_8)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_8);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_44 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8677, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              if (__pyx_t_8) {
                __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_44, 0, __pyx_t_8); __pyx_t_8 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_44, 0+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_44, 1+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_44, 2+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_44, 3+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_44, 4+__pyx_t_28, __pyx_t_36);
              __pyx_t_7 = 0;
              __pyx_t_40 = 0;
              __pyx_t_26 = 0;
              __pyx_t_5 = 0;
              __pyx_t_36 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_44, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8677, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8677, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_45 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_45, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8678:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_46 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_47 = 0;
              __pyx_t_48 = __pyx_v_xt;
              __pyx_t_49 = __pyx_v_yt;
              __pyx_t_50 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_49, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_50, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_46, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_47, __pyx_pybuffernd_col.diminfo[1].strides));
+8679:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_51 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_52 = 1;
              __pyx_t_53 = __pyx_v_xt;
              __pyx_t_54 = __pyx_v_yt;
              __pyx_t_55 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_54, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_55, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_51, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_52, __pyx_pybuffernd_col.diminfo[1].strides));
+8680:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_56 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_57 = 2;
              __pyx_t_58 = __pyx_v_xt;
              __pyx_t_59 = __pyx_v_yt;
              __pyx_t_60 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_59, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_60, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_57, __pyx_pybuffernd_col.diminfo[1].strides));
+8681:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8682:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8683: 
+8684:             elif  seq == 2:
        case 2:
/* … */
        break;
+8685:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L14_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L14_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L14_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8686:                     count = 0
          __pyx_v_count = 0;
+8687:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8688:                         xt = np.random.randint(0, m - 1)
            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8688, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_44 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8688, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_44);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_44, __pyx_n_s_randint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8688, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
            __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8688, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_44);
            __pyx_t_36 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_36)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_36);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_5 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8688, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_36) {
              __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_36); __pyx_t_36 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_44);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_t_44);
            __pyx_t_44 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8688, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_61 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_61 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8688, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_61;
+8689:                         yt = np.random.randint(0, n - 1)
            __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8689, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8689, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_randint); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8689, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8689, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_44 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_44 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_44)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_44);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_36 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8689, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_36);
            if (__pyx_t_44) {
              __Pyx_GIVEREF(__pyx_t_44); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_44); __pyx_t_44 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8689, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_61 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_61 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8689, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_61;
+8690:                         if I[xt, yt] == 0:
            __pyx_t_61 = __pyx_v_xt;
            __pyx_t_62 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_61, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_62, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
+8691:                             I[xt, yt] = p + count + 1
              __pyx_t_63 = __pyx_v_xt;
              __pyx_t_64 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_63, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_64, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8692:                             X[p + count] = xt
              __pyx_t_65 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8693:                             Y[p + count] = yt
              __pyx_t_66 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8694:                             a[p + count] = 1
              __pyx_t_67 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8695:                             MAJ[p + count] = 1
              __pyx_t_68 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_68, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8696:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, 1)
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8696, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8696, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8696, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_44 = __pyx_v_Thetafunc; __pyx_t_26 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_44))) {
                __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_44);
                if (likely(__pyx_t_26)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
                  __Pyx_INCREF(__pyx_t_26);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_44, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_40 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8696, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              if (__pyx_t_26) {
                __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_26); __pyx_t_26 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_40, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_40, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_40, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_1 = 0;
              __pyx_t_36 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8696, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8696, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_69 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_69, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8697:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, Theta[p + count], 1)
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8697, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8697, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8697, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_70 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_36 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_70, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8697, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_1 = __pyx_v_Adotfunc; __pyx_t_26 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_26)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_26);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8697, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_26) {
                __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_26); __pyx_t_26 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_28, __pyx_t_36);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_44 = 0;
              __pyx_t_40 = 0;
              __pyx_t_5 = 0;
              __pyx_t_36 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8697, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8697, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_71 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8698:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, adotVal[p + count], Theta[p + count])
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8698, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8698, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8698, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_72 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_72, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8698, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_73 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_40 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_73, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8698, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_44 = __pyx_v_Rfunc; __pyx_t_26 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_44))) {
                __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_44);
                if (likely(__pyx_t_26)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
                  __Pyx_INCREF(__pyx_t_26);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_44, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_8 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8698, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (__pyx_t_26) {
                __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_26); __pyx_t_26 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_28, __pyx_t_40);
              __pyx_t_1 = 0;
              __pyx_t_7 = 0;
              __pyx_t_36 = 0;
              __pyx_t_5 = 0;
              __pyx_t_40 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8698, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8698, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_74 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8699:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_75 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_76 = 0;
              __pyx_t_77 = __pyx_v_xt;
              __pyx_t_78 = __pyx_v_yt;
              __pyx_t_79 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_77, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_78, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_79, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_76, __pyx_pybuffernd_col.diminfo[1].strides));
+8700:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_80 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_81 = 1;
              __pyx_t_82 = __pyx_v_xt;
              __pyx_t_83 = __pyx_v_yt;
              __pyx_t_84 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_82, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_83, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_84, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_81, __pyx_pybuffernd_col.diminfo[1].strides));
+8701:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_85 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_86 = 2;
              __pyx_t_87 = __pyx_v_xt;
              __pyx_t_88 = __pyx_v_yt;
              __pyx_t_89 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_87, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_88, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_89, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_col.diminfo[1].strides));
+8702:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8703:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8704: 
+8705:             elif  seq == 3:
        case 3:
/* … */
        break;
+8706:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L21_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L21_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L21_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8707:                     count = 0
          __pyx_v_count = 0;
+8708:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8709:                         xt = np.random.randint(0, m - 1)
            __pyx_t_44 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8709, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_44);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_44, __pyx_n_s_random); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8709, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
            __pyx_t_44 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_randint); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8709, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_44);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8709, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_40 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_44))) {
              __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_44);
              if (likely(__pyx_t_40)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
                __Pyx_INCREF(__pyx_t_40);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_44, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_5 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8709, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_40) {
              __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_40); __pyx_t_40 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_t_8);
            __pyx_t_8 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8709, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
            __pyx_t_90 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_90 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8709, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_90;
+8710:                         yt = np.random.randint(0, n - 1)
            __pyx_t_44 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8710, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_44);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_44, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8710, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
            __pyx_t_44 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_randint); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8710, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_44);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8710, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_8 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_44))) {
              __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_44);
              if (likely(__pyx_t_8)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
                __Pyx_INCREF(__pyx_t_8);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_44, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_40 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8710, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_40);
            if (__pyx_t_8) {
              __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_8); __pyx_t_8 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8710, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
            __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
            __pyx_t_90 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_90 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8710, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_90;
+8711:                         if I[xt, yt] == 0:
            __pyx_t_90 = __pyx_v_xt;
            __pyx_t_91 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_90, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_91, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
+8712:                             I[xt, yt] = p + count + 1
              __pyx_t_92 = __pyx_v_xt;
              __pyx_t_93 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_93, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8713:                             X[p + count] = xt
              __pyx_t_94 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8714:                             Y[p + count] = yt
              __pyx_t_95 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_95, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8715:                             a[p + count] = 1
              __pyx_t_96 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_96, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8716:                             MAJ[p + count] = 1
              __pyx_t_97 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_97, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8717:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, 1, 0)
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8717, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8717, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8717, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_8 = __pyx_v_Rfunc; __pyx_t_36 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_36)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_36);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8717, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_36) {
                __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_36); __pyx_t_36 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_28, __pyx_int_0);
              __pyx_t_44 = 0;
              __pyx_t_40 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8717, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8717, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_98 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8718:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, Rval[p + count], 1)
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8718, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8718, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8718, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_99 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_40 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_99, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8718, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_44 = __pyx_v_Thetafunc; __pyx_t_36 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_44))) {
                __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_44);
                if (likely(__pyx_t_36)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
                  __Pyx_INCREF(__pyx_t_36);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_44, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_1 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8718, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__pyx_t_36) {
                __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_36); __pyx_t_36 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_28, __pyx_t_40);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_8 = 0;
              __pyx_t_7 = 0;
              __pyx_t_5 = 0;
              __pyx_t_40 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8718, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8718, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_100 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_100, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8719:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, Theta[p + count], Rval[p + count])
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_101 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_102 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_7 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_8 = __pyx_v_Adotfunc; __pyx_t_36 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_36)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_36);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_26 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              if (__pyx_t_36) {
                __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_36); __pyx_t_36 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_26, 2+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_26, 3+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_26, 4+__pyx_t_28, __pyx_t_7);
              __pyx_t_44 = 0;
              __pyx_t_1 = 0;
              __pyx_t_40 = 0;
              __pyx_t_5 = 0;
              __pyx_t_7 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8719, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8719, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_103 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8720:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_104 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_105 = 0;
              __pyx_t_106 = __pyx_v_xt;
              __pyx_t_107 = __pyx_v_yt;
              __pyx_t_108 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_106, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_107, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_108, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_104, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_105, __pyx_pybuffernd_col.diminfo[1].strides));
+8721:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_109 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_110 = 1;
              __pyx_t_111 = __pyx_v_xt;
              __pyx_t_112 = __pyx_v_yt;
              __pyx_t_113 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_112, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_113, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_109, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_110, __pyx_pybuffernd_col.diminfo[1].strides));
+8722:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_114 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_115 = 2;
              __pyx_t_116 = __pyx_v_xt;
              __pyx_t_117 = __pyx_v_yt;
              __pyx_t_118 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_116, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_117, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_118, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_114, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_115, __pyx_pybuffernd_col.diminfo[1].strides));
+8723:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8724:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8725: 
+8726:             elif  seq == 4:
        case 4:
/* … */
        break;
+8727:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L28_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L28_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L28_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8728:                     count = 0
          __pyx_v_count = 0;
+8729:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8730:                         xt = np.random.randint(0, m - 1)
            __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_26, __pyx_n_s_randint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
            __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            __pyx_t_7 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
              __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
              if (likely(__pyx_t_7)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_7);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_8, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_5 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_7) {
              __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_26);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_t_26);
            __pyx_t_26 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8730, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_119 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_119 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8730, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_119;
+8731:                         yt = np.random.randint(0, n - 1)
            __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_randint); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_26 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
              __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_8);
              if (likely(__pyx_t_26)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_26);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_8, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_7 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            if (__pyx_t_26) {
              __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_26); __pyx_t_26 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8731, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_119 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_119 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8731, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_119;
+8732:                         if I[xt, yt] == 0:
            __pyx_t_119 = __pyx_v_xt;
            __pyx_t_120 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_120, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
+8733:                             I[xt, yt] = p + count + 1
              __pyx_t_121 = __pyx_v_xt;
              __pyx_t_122 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8734:                             X[p + count] = xt
              __pyx_t_123 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_123, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8735:                             Y[p + count] = yt
              __pyx_t_124 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8736:                             a[p + count] = 1
              __pyx_t_125 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_125, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8737:                             MAJ[p + count] = 1
              __pyx_t_126 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8738:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, 1, 0)
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8738, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8738, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8738, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_26 = __pyx_v_Rfunc; __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_26);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_26, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_1 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8738, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_28, __pyx_int_0);
              __pyx_t_8 = 0;
              __pyx_t_7 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8738, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8738, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_127 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8739:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, Rval[p + count])
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_128 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_7 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_128, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_8 = __pyx_v_Adotfunc; __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_44 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_44, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_44, 0+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_44, 1+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_44, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_44, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_44, 4+__pyx_t_28, __pyx_t_7);
              __pyx_t_26 = 0;
              __pyx_t_1 = 0;
              __pyx_t_5 = 0;
              __pyx_t_7 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_44, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8739, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8739, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_129 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_129, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8740:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, Rval[p + count], adotVal[p + count])
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8740, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8740, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8740, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_130 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_130, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8740, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_131 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_1 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8740, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_26 = __pyx_v_Thetafunc; __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_26);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_26, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_36 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8740, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_36, 2+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_36, 3+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_36, 4+__pyx_t_28, __pyx_t_1);
              __pyx_t_8 = 0;
              __pyx_t_44 = 0;
              __pyx_t_7 = 0;
              __pyx_t_5 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8740, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8740, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_132 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_132, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8741:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_133 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_134 = 0;
              __pyx_t_135 = __pyx_v_xt;
              __pyx_t_136 = __pyx_v_yt;
              __pyx_t_137 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_137, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_134, __pyx_pybuffernd_col.diminfo[1].strides));
+8742:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_138 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_139 = 1;
              __pyx_t_140 = __pyx_v_xt;
              __pyx_t_141 = __pyx_v_yt;
              __pyx_t_142 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_142, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_138, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_139, __pyx_pybuffernd_col.diminfo[1].strides));
+8743:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_143 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_144 = 2;
              __pyx_t_145 = __pyx_v_xt;
              __pyx_t_146 = __pyx_v_yt;
              __pyx_t_147 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_147, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_144, __pyx_pybuffernd_col.diminfo[1].strides));
+8744:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8745:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8746: 
+8747:             elif  seq == 5:
        case 5:
/* … */
        break;
+8748:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L35_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L35_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L35_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8749:                     count = 0
          __pyx_v_count = 0;
+8750:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8751:                         xt = np.random.randint(0, m - 1)
            __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8751, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_26, __pyx_n_s_random); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8751, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_36);
            __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
            __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_36, __pyx_n_s_randint); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8751, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
            __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8751, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_36);
            __pyx_t_1 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_26);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_26, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_5 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8751, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_1) {
              __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_36);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_t_36);
            __pyx_t_36 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8751, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
            __pyx_t_148 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_148 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8751, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_148;
+8752:                         yt = np.random.randint(0, n - 1)
            __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8752, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_26, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8752, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
            __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_randint); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8752, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8752, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_36 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
              __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_26);
              if (likely(__pyx_t_36)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
                __Pyx_INCREF(__pyx_t_36);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_26, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_1 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8752, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (__pyx_t_36) {
              __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_36); __pyx_t_36 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8752, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
            __pyx_t_148 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_148 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8752, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_148;
+8753:                         if I[xt, yt] == 0:
            __pyx_t_148 = __pyx_v_xt;
            __pyx_t_149 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_148, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_149, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
+8754:                             I[xt, yt] = p + count + 1
              __pyx_t_150 = __pyx_v_xt;
              __pyx_t_151 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_151, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8755:                             X[p + count] = xt
              __pyx_t_152 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_152, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8756:                             Y[p + count] = yt
              __pyx_t_153 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_153, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8757:                             a[p + count] = 1
              __pyx_t_154 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8758:                             MAJ[p + count] = 1
              __pyx_t_155 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_155, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8759:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, 1)
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8759, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8759, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8759, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_36 = __pyx_v_Adotfunc; __pyx_t_7 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_36))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_36);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_36, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_44 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8759, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_44, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_44, 0+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_44, 1+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_44, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_44, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_44, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_26 = 0;
              __pyx_t_1 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_44, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8759, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8759, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_156 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8760:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, adotVal[p + count])
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_157 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_1 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_26 = __pyx_v_Thetafunc; __pyx_t_7 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_26);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_26, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_8 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_28, __pyx_t_1);
              __pyx_t_36 = 0;
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8760, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8760, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_158 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_158, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8761:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, adotVal[p + count], Theta[p + count])
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_159 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_159, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_160 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_44 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_160, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_36 = __pyx_v_Rfunc; __pyx_t_7 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_36))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_36);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_36, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_40 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_40, 2+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_40, 3+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_40, 4+__pyx_t_28, __pyx_t_44);
              __pyx_t_26 = 0;
              __pyx_t_8 = 0;
              __pyx_t_1 = 0;
              __pyx_t_5 = 0;
              __pyx_t_44 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8761, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8761, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_161 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_161, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8762:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_162 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_163 = 0;
              __pyx_t_164 = __pyx_v_xt;
              __pyx_t_165 = __pyx_v_yt;
              __pyx_t_166 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_164, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_165, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_166, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_162, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_163, __pyx_pybuffernd_col.diminfo[1].strides));
+8763:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_167 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_168 = 1;
              __pyx_t_169 = __pyx_v_xt;
              __pyx_t_170 = __pyx_v_yt;
              __pyx_t_171 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_169, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_170, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_171, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_167, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_168, __pyx_pybuffernd_col.diminfo[1].strides));
+8764:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_172 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_173 = 2;
              __pyx_t_174 = __pyx_v_xt;
              __pyx_t_175 = __pyx_v_yt;
              __pyx_t_176 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_174, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_175, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_176, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_172, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_173, __pyx_pybuffernd_col.diminfo[1].strides));
+8765:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8766:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8767: 
+8768:             elif  seq == 6:
        case 6:
/* … */
        break;
        default: break;
      }
+8769:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L42_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L42_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L42_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8770:                     count = 0
          __pyx_v_count = 0;
+8771:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8772:                         xt = np.random.randint(0, m - 1)
            __pyx_t_36 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8772, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_36);
            __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_36, __pyx_n_s_random); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8772, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_40);
            __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
            __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_randint); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8772, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_36);
            __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
            __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8772, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_40);
            __pyx_t_44 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_36))) {
              __pyx_t_44 = PyMethod_GET_SELF(__pyx_t_36);
              if (likely(__pyx_t_44)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
                __Pyx_INCREF(__pyx_t_44);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_36, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_5 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8772, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (__pyx_t_44) {
              __Pyx_GIVEREF(__pyx_t_44); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_44); __pyx_t_44 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_40);
            PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_t_40);
            __pyx_t_40 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8772, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
            __pyx_t_177 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_177 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8772, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_xt = __pyx_t_177;
+8773:                         yt = np.random.randint(0, n - 1)
            __pyx_t_36 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8773, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_36);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_36, __pyx_n_s_random); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8773, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
            __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_randint); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8773, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_36);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8773, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_40 = NULL;
            __pyx_t_28 = 0;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_36))) {
              __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_36);
              if (likely(__pyx_t_40)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
                __Pyx_INCREF(__pyx_t_40);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_36, function);
                __pyx_t_28 = 1;
              }
            }
            __pyx_t_44 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8773, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_44);
            if (__pyx_t_40) {
              __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_44, 0, __pyx_t_40); __pyx_t_40 = NULL;
            }
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_GIVEREF(__pyx_int_0);
            PyTuple_SET_ITEM(__pyx_t_44, 0+__pyx_t_28, __pyx_int_0);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_44, 1+__pyx_t_28, __pyx_t_5);
            __pyx_t_5 = 0;
            __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_44, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8773, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
            __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
            __pyx_t_177 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_6); if (unlikely((__pyx_t_177 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8773, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_v_yt = __pyx_t_177;
+8774:                         if I[xt, yt] == 0:
            __pyx_t_177 = __pyx_v_xt;
            __pyx_t_178 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_177, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_178, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
+8775:                             I[xt, yt] = p + count + 1
              __pyx_t_179 = __pyx_v_xt;
              __pyx_t_180 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_180, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8776:                             X[p + count] = xt
              __pyx_t_181 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_181, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8777:                             Y[p + count] = yt
              __pyx_t_182 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8778:                             a[p + count] = 1
              __pyx_t_183 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_183, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8779:                             MAJ[p + count] = 1
              __pyx_t_184 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_184, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8780:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, 1)
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8780, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8780, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8780, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_40 = __pyx_v_Adotfunc; __pyx_t_1 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_40))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_40);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_40, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_8 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8780, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (__pyx_t_1) {
                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_36 = 0;
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8780, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8780, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_185 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_185, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8781:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, adotVal[p + count], 0)
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8781, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8781, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8781, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_186 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_44 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_186, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8781, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_36 = __pyx_v_Rfunc; __pyx_t_1 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_36))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_36);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_36, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_26 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8781, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              if (__pyx_t_1) {
                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_1); __pyx_t_1 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_26, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_26, 3+__pyx_t_28, __pyx_t_44);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_26, 4+__pyx_t_28, __pyx_int_0);
              __pyx_t_40 = 0;
              __pyx_t_8 = 0;
              __pyx_t_5 = 0;
              __pyx_t_44 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8781, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8781, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_187 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_187, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8782:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, Rval[p + count], adotVal[p + count])
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8782, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8782, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8782, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_188 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_188, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8782, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_189 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_8 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_189, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8782, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_40 = __pyx_v_Thetafunc; __pyx_t_1 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_40))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_40);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_40, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8782, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_1) {
                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_28, __pyx_t_8);
              __pyx_t_36 = 0;
              __pyx_t_26 = 0;
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8782, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8782, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_190 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_190, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8783:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_191 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_192 = 0;
              __pyx_t_193 = __pyx_v_xt;
              __pyx_t_194 = __pyx_v_yt;
              __pyx_t_195 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_193, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_194, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_195, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_191, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_192, __pyx_pybuffernd_col.diminfo[1].strides));
+8784:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_196 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_197 = 1;
              __pyx_t_198 = __pyx_v_xt;
              __pyx_t_199 = __pyx_v_yt;
              __pyx_t_200 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_199, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_200, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_196, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_197, __pyx_pybuffernd_col.diminfo[1].strides));
+8785:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_201 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_202 = 2;
              __pyx_t_203 = __pyx_v_xt;
              __pyx_t_204 = __pyx_v_yt;
              __pyx_t_205 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_203, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_204, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_205, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_201, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_202, __pyx_pybuffernd_col.diminfo[1].strides));
+8786:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8787:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8788: 
 8789:         else:
+8790:             if seq == 1:
    /*else*/ {
/* … */
      switch (__pyx_v_seq) {
/* … */
        case 1:
/* … */
        break;
+8791:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L49_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L49_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L49_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8792:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8792, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_40);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8792, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
          __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8792, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_40);
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8792, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8792, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_44 = NULL;
          __pyx_t_28 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_44 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_44)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_44);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
              __pyx_t_28 = 1;
            }
          }
          __pyx_t_26 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8792, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_26);
          if (__pyx_t_44) {
            __Pyx_GIVEREF(__pyx_t_44); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_44); __pyx_t_44 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_40);
          PyTuple_SET_ITEM(__pyx_t_26, 2+__pyx_t_28, __pyx_t_40);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_26, 3+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_26, 4+__pyx_t_28, __pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_26, 5+__pyx_t_28, __pyx_t_5);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_26, 6+__pyx_t_28, __pyx_int_1);
          __pyx_t_40 = 0;
          __pyx_t_8 = 0;
          __pyx_t_5 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8792, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 8792, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_26 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_26 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_26);
            #else
            __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8792, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_26 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8792, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8792, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_206 = Py_TYPE(__pyx_t_5)->tp_iternext;
            index = 0; __pyx_t_7 = __pyx_t_206(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L52_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_7);
            index = 1; __pyx_t_26 = __pyx_t_206(__pyx_t_5); if (unlikely(!__pyx_t_26)) goto __pyx_L52_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_26);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_5), 2) < 0) __PYX_ERR(0, 8792, __pyx_L1_error)
            __pyx_t_206 = NULL;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            goto __pyx_L53_unpacking_done;
            __pyx_L52_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_206 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 8792, __pyx_L1_error)
            __pyx_L53_unpacking_done:;
          }
          if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8792, __pyx_L1_error)
          if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8792, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8792, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_7));
          __pyx_t_7 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_26);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8792, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_26));
          __pyx_t_26 = 0;
+8793:                     w = 0
          __pyx_v_w = 0;
+8794:                     count = 0
          __pyx_v_count = 0;
+8795:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8796:                         xt = xtrial[w]
            __pyx_t_207 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_207, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+8797:                         yt = ytrial[w]
            __pyx_t_208 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_208, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+8798:                         if I[xt, yt] == 0:
            __pyx_t_209 = __pyx_v_xt;
            __pyx_t_210 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_209, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_210, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
+8799:                             I[xt, yt] = p + count + 1
              __pyx_t_211 = __pyx_v_xt;
              __pyx_t_212 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_211, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_212, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8800:                             X[p + count] = xt
              __pyx_t_213 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_213, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8801:                             Y[p + count] = yt
              __pyx_t_214 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_214, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8802:                             a[p + count] = 1
              __pyx_t_215 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_215, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8803:                             MAJ[p + count] = 1
              __pyx_t_216 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_216, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8804:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, 1)
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8804, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8804, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8804, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_8 = __pyx_v_Thetafunc; __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_44 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8804, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_44, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_44, 0+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_44, 1+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_44, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_44, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_44, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_26 = 0;
              __pyx_t_7 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_44, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8804, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8804, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_217 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_217, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8805:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, 1, Theta[p + count])
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8805, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8805, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8805, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_218 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_7 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_218, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8805, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_26 = __pyx_v_Rfunc; __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_26);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_26, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_36 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8805, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_36, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_36, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_36, 4+__pyx_t_28, __pyx_t_7);
              __pyx_t_8 = 0;
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_7 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8805, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8805, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_219 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_219, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8806:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, Theta[p + count], Rval[p + count])
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8806, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8806, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8806, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_220 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_220, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8806, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_221 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_44 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_221, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8806, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_8 = __pyx_v_Adotfunc; __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_1 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8806, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_28, __pyx_t_44);
              __pyx_t_26 = 0;
              __pyx_t_36 = 0;
              __pyx_t_7 = 0;
              __pyx_t_5 = 0;
              __pyx_t_44 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8806, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8806, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_222 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_222, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8807:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_223 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_224 = 0;
              __pyx_t_225 = __pyx_v_xt;
              __pyx_t_226 = __pyx_v_yt;
              __pyx_t_227 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_225, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_226, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_227, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_223, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_224, __pyx_pybuffernd_col.diminfo[1].strides));
+8808:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_228 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_229 = 1;
              __pyx_t_230 = __pyx_v_xt;
              __pyx_t_231 = __pyx_v_yt;
              __pyx_t_232 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_230, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_231, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_232, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_228, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_229, __pyx_pybuffernd_col.diminfo[1].strides));
+8809:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_233 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_234 = 2;
              __pyx_t_235 = __pyx_v_xt;
              __pyx_t_236 = __pyx_v_yt;
              __pyx_t_237 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_235, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_236, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_237, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_233, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_234, __pyx_pybuffernd_col.diminfo[1].strides));
+8810:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8811:                         if w < dp - 1:
            __pyx_t_25 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_25) {
/* … */
              goto __pyx_L57;
            }
+8812:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 8813:                         else:
+8814:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8814, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8814, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8814, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8814, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8814, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_7 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_36 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8814, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_36, 2+__pyx_t_28, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_36, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_36, 4+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_36, 5+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_36, 6+__pyx_t_28, __pyx_int_1);
              __pyx_t_8 = 0;
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8814, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 8814, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_36 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_36 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_36);
                #else
                __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8814, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_1);
                __pyx_t_36 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8814, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_36);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8814, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_5);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_206 = Py_TYPE(__pyx_t_5)->tp_iternext;
                index = 0; __pyx_t_1 = __pyx_t_206(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L58_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_1);
                index = 1; __pyx_t_36 = __pyx_t_206(__pyx_t_5); if (unlikely(!__pyx_t_36)) goto __pyx_L58_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_36);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_5), 2) < 0) __PYX_ERR(0, 8814, __pyx_L1_error)
                __pyx_t_206 = NULL;
                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                goto __pyx_L59_unpacking_done;
                __pyx_L58_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                __pyx_t_206 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 8814, __pyx_L1_error)
                __pyx_L59_unpacking_done:;
              }
              if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8814, __pyx_L1_error)
              if (!(likely(((__pyx_t_36) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_36, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8814, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8814, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_1));
              __pyx_t_1 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_36);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8814, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_36));
              __pyx_t_36 = 0;
+8815:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L57:;
          }
+8816:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
+8817:             elif seq == 2:
        case 2:
/* … */
        break;
+8818:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L61_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L61_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L61_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8819:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_36 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8819, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_36);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_36, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8819, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
          __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8819, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_36);
          __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8819, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8819, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_44);
          __pyx_t_8 = NULL;
          __pyx_t_28 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
              __pyx_t_28 = 1;
            }
          }
          __pyx_t_7 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8819, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_36);
          PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_28, __pyx_t_36);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_28, __pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_44);
          PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_28, __pyx_t_44);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_28, __pyx_int_1);
          __pyx_t_36 = 0;
          __pyx_t_5 = 0;
          __pyx_t_44 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8819, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 8819, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_7);
            #else
            __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8819, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8819, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_44 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8819, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_44);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_206 = Py_TYPE(__pyx_t_44)->tp_iternext;
            index = 0; __pyx_t_1 = __pyx_t_206(__pyx_t_44); if (unlikely(!__pyx_t_1)) goto __pyx_L64_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_1);
            index = 1; __pyx_t_7 = __pyx_t_206(__pyx_t_44); if (unlikely(!__pyx_t_7)) goto __pyx_L64_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_7);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_44), 2) < 0) __PYX_ERR(0, 8819, __pyx_L1_error)
            __pyx_t_206 = NULL;
            __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
            goto __pyx_L65_unpacking_done;
            __pyx_L64_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
            __pyx_t_206 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 8819, __pyx_L1_error)
            __pyx_L65_unpacking_done:;
          }
          if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8819, __pyx_L1_error)
          if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8819, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8819, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_1));
          __pyx_t_1 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8819, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_7));
          __pyx_t_7 = 0;
+8820:                     w = 0
          __pyx_v_w = 0;
+8821:                     count = 0
          __pyx_v_count = 0;
+8822:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8823:                         xt = xtrial[w]
            __pyx_t_238 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_238, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+8824:                         yt = ytrial[w]
            __pyx_t_239 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_239, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+8825:                         if I[xt, yt] == 0:
            __pyx_t_240 = __pyx_v_xt;
            __pyx_t_241 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_240, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_241, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
+8826:                             I[xt, yt] = p + count + 1
              __pyx_t_242 = __pyx_v_xt;
              __pyx_t_243 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_242, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_243, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8827:                             X[p + count] = xt
              __pyx_t_244 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_244, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8828:                             Y[p + count] = yt
              __pyx_t_245 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_245, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8829:                             a[p + count] = 1
              __pyx_t_246 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_246, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8830:                             MAJ[p + count] = 1
              __pyx_t_247 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_247, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8831:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, 1)
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8831, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8831, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8831, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_5 = __pyx_v_Thetafunc; __pyx_t_36 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_36)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_36);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_8 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8831, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (__pyx_t_36) {
                __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_36); __pyx_t_36 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_28, __pyx_t_44);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_7 = 0;
              __pyx_t_1 = 0;
              __pyx_t_44 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8831, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8831, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_248 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_248, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8832:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, Theta[p + count], 1)
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8832, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8832, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8832, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_249 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_1 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_249, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8832, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_7 = __pyx_v_Adotfunc; __pyx_t_36 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
                __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_7);
                if (likely(__pyx_t_36)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                  __Pyx_INCREF(__pyx_t_36);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_7, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_26 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8832, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              if (__pyx_t_36) {
                __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_36); __pyx_t_36 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_26, 2+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_26, 3+__pyx_t_28, __pyx_t_1);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_26, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_5 = 0;
              __pyx_t_8 = 0;
              __pyx_t_44 = 0;
              __pyx_t_1 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8832, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8832, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_250 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_250, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8833:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, adotVal[p + count], Theta[p + count])
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8833, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8833, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8833, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_251 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_44 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_251, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8833, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_252 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_8 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_252, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8833, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_5 = __pyx_v_Rfunc; __pyx_t_36 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_36)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_36);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_40 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8833, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              if (__pyx_t_36) {
                __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_36); __pyx_t_36 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_40, 2+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_40, 3+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_40, 4+__pyx_t_28, __pyx_t_8);
              __pyx_t_7 = 0;
              __pyx_t_26 = 0;
              __pyx_t_1 = 0;
              __pyx_t_44 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8833, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8833, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_253 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_253, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8834:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_254 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_255 = 0;
              __pyx_t_256 = __pyx_v_xt;
              __pyx_t_257 = __pyx_v_yt;
              __pyx_t_258 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_256, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_257, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_258, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_254, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_255, __pyx_pybuffernd_col.diminfo[1].strides));
+8835:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_259 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_260 = 1;
              __pyx_t_261 = __pyx_v_xt;
              __pyx_t_262 = __pyx_v_yt;
              __pyx_t_263 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_261, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_262, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_263, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_259, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_260, __pyx_pybuffernd_col.diminfo[1].strides));
+8836:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_264 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_265 = 2;
              __pyx_t_266 = __pyx_v_xt;
              __pyx_t_267 = __pyx_v_yt;
              __pyx_t_268 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_266, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_267, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_268, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_264, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_265, __pyx_pybuffernd_col.diminfo[1].strides));
+8837:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8838:                         if w < dp - 1:
            __pyx_t_25 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_25) {
/* … */
              goto __pyx_L69;
            }
+8839:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 8840:                         else:
+8841:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8841, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8841, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8841, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8841, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8841, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_1 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_40))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_40);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_40, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_26 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8841, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              if (__pyx_t_1) {
                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_1); __pyx_t_1 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_26, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_26, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_26, 4+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_26, 5+__pyx_t_28, __pyx_t_44);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_26, 6+__pyx_t_28, __pyx_int_1);
              __pyx_t_5 = 0;
              __pyx_t_8 = 0;
              __pyx_t_44 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8841, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 8841, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_40 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_26 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_40 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_26 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_40);
                __Pyx_INCREF(__pyx_t_26);
                #else
                __pyx_t_40 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8841, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_40);
                __pyx_t_26 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8841, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_26);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_44 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8841, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_44);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_206 = Py_TYPE(__pyx_t_44)->tp_iternext;
                index = 0; __pyx_t_40 = __pyx_t_206(__pyx_t_44); if (unlikely(!__pyx_t_40)) goto __pyx_L70_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_40);
                index = 1; __pyx_t_26 = __pyx_t_206(__pyx_t_44); if (unlikely(!__pyx_t_26)) goto __pyx_L70_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_26);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_44), 2) < 0) __PYX_ERR(0, 8841, __pyx_L1_error)
                __pyx_t_206 = NULL;
                __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
                goto __pyx_L71_unpacking_done;
                __pyx_L70_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
                __pyx_t_206 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 8841, __pyx_L1_error)
                __pyx_L71_unpacking_done:;
              }
              if (!(likely(((__pyx_t_40) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_40, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8841, __pyx_L1_error)
              if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8841, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_40);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8841, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_40));
              __pyx_t_40 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_26);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8841, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_26));
              __pyx_t_26 = 0;
+8842:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L69:;
          }
+8843:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
+8844:             elif seq == 3:
        case 3:
/* … */
        break;
+8845:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L73_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L73_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L73_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8846:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8846, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_26);
          __pyx_t_40 = __Pyx_PyObject_GetAttrStr(__pyx_t_26, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8846, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_40);
          __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
          __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8846, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_26);
          __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8846, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_44);
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8846, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_5 = NULL;
          __pyx_t_28 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_40))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_40);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_40, function);
              __pyx_t_28 = 1;
            }
          }
          __pyx_t_1 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8846, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          if (__pyx_t_5) {
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_26);
          PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_28, __pyx_t_26);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_44);
          PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_28, __pyx_t_44);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_1, 5+__pyx_t_28, __pyx_t_8);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_1, 6+__pyx_t_28, __pyx_int_1);
          __pyx_t_26 = 0;
          __pyx_t_44 = 0;
          __pyx_t_8 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8846, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 8846, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_40 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_40 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_40);
            __Pyx_INCREF(__pyx_t_1);
            #else
            __pyx_t_40 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8846, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_40);
            __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8846, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8846, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_206 = Py_TYPE(__pyx_t_8)->tp_iternext;
            index = 0; __pyx_t_40 = __pyx_t_206(__pyx_t_8); if (unlikely(!__pyx_t_40)) goto __pyx_L76_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_40);
            index = 1; __pyx_t_1 = __pyx_t_206(__pyx_t_8); if (unlikely(!__pyx_t_1)) goto __pyx_L76_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_1);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_8), 2) < 0) __PYX_ERR(0, 8846, __pyx_L1_error)
            __pyx_t_206 = NULL;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            goto __pyx_L77_unpacking_done;
            __pyx_L76_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_206 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 8846, __pyx_L1_error)
            __pyx_L77_unpacking_done:;
          }
          if (!(likely(((__pyx_t_40) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_40, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8846, __pyx_L1_error)
          if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8846, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_40);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8846, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_40));
          __pyx_t_40 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8846, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_1));
          __pyx_t_1 = 0;
+8847:                     w = 0
          __pyx_v_w = 0;
+8848:                     count = 0
          __pyx_v_count = 0;
+8849:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8850:                         xt = xtrial[w]
            __pyx_t_269 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_269, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+8851:                         yt = ytrial[w]
            __pyx_t_270 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_270, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+8852:                         if I[xt, yt] == 0:
            __pyx_t_271 = __pyx_v_xt;
            __pyx_t_272 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_271, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_272, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
+8853:                             I[xt, yt] = p + count + 1
              __pyx_t_273 = __pyx_v_xt;
              __pyx_t_274 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_273, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_274, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8854:                             X[p + count] = xt
              __pyx_t_275 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_275, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8855:                             Y[p + count] = yt
              __pyx_t_276 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_276, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8856:                             a[p + count] = 1
              __pyx_t_277 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_277, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8857:                             MAJ[p + count] = 1
              __pyx_t_278 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_278, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8858:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, 1, 0)
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8858, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8858, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8858, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_44 = __pyx_v_Rfunc; __pyx_t_26 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_44))) {
                __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_44);
                if (likely(__pyx_t_26)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
                  __Pyx_INCREF(__pyx_t_26);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_44, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_5 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8858, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              if (__pyx_t_26) {
                __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_26); __pyx_t_26 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_28, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_28, __pyx_int_0);
              __pyx_t_1 = 0;
              __pyx_t_40 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8858, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8858, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_279 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_279, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8859:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, Rval[p + count], 1)
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8859, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8859, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8859, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_280 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_40 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_280, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8859, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_1 = __pyx_v_Thetafunc; __pyx_t_26 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_26)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_26);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8859, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_26) {
                __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_26); __pyx_t_26 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_28, __pyx_t_40);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_8 = 0;
              __pyx_t_40 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8859, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8859, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_281 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_281, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8860:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, Theta[p + count], Rval[p + count])
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8860, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8860, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8860, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_282 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_8 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_282, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8860, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_283 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_283, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8860, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_44 = __pyx_v_Adotfunc; __pyx_t_26 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_44))) {
                __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_44);
                if (likely(__pyx_t_26)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
                  __Pyx_INCREF(__pyx_t_26);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_44, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_36 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8860, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              if (__pyx_t_26) {
                __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_26); __pyx_t_26 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_36, 2+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_36, 3+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_36, 4+__pyx_t_28, __pyx_t_5);
              __pyx_t_1 = 0;
              __pyx_t_7 = 0;
              __pyx_t_40 = 0;
              __pyx_t_8 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8860, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8860, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_284 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_284, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8861:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_285 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_286 = 0;
              __pyx_t_287 = __pyx_v_xt;
              __pyx_t_288 = __pyx_v_yt;
              __pyx_t_289 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_287, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_288, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_289, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_285, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_286, __pyx_pybuffernd_col.diminfo[1].strides));
+8862:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_290 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_291 = 1;
              __pyx_t_292 = __pyx_v_xt;
              __pyx_t_293 = __pyx_v_yt;
              __pyx_t_294 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_292, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_293, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_294, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_290, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_291, __pyx_pybuffernd_col.diminfo[1].strides));
+8863:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_295 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_296 = 2;
              __pyx_t_297 = __pyx_v_xt;
              __pyx_t_298 = __pyx_v_yt;
              __pyx_t_299 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_297, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_298, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_299, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_295, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_296, __pyx_pybuffernd_col.diminfo[1].strides));
+8864:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8865:                         if w < dp - 1:
            __pyx_t_25 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_25) {
/* … */
              goto __pyx_L81;
            }
+8866:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 8867:                         else:
+8868:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_44 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8868, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_44, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8868, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8868, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8868, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8868, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_36))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_36);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_36, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8868, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_28, __pyx_t_44);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_28, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_28, __pyx_int_1);
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8868, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 8868, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_36 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_36 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_36);
                __Pyx_INCREF(__pyx_t_7);
                #else
                __pyx_t_36 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8868, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_36);
                __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8868, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_7);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8868, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_8);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_206 = Py_TYPE(__pyx_t_8)->tp_iternext;
                index = 0; __pyx_t_36 = __pyx_t_206(__pyx_t_8); if (unlikely(!__pyx_t_36)) goto __pyx_L82_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_36);
                index = 1; __pyx_t_7 = __pyx_t_206(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L82_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_7);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_8), 2) < 0) __PYX_ERR(0, 8868, __pyx_L1_error)
                __pyx_t_206 = NULL;
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                goto __pyx_L83_unpacking_done;
                __pyx_L82_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __pyx_t_206 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 8868, __pyx_L1_error)
                __pyx_L83_unpacking_done:;
              }
              if (!(likely(((__pyx_t_36) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_36, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8868, __pyx_L1_error)
              if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8868, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_36);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8868, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_36));
              __pyx_t_36 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_7);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8868, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_7));
              __pyx_t_7 = 0;
+8869:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L81:;
          }
+8870:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
+8871:             elif seq == 4:
        case 4:
/* … */
        break;
+8872:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L85_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L85_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L85_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8873:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8873, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8873, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_36);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8873, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8873, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8873, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_44 = NULL;
          __pyx_t_28 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_36))) {
            __pyx_t_44 = PyMethod_GET_SELF(__pyx_t_36);
            if (likely(__pyx_t_44)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
              __Pyx_INCREF(__pyx_t_44);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_36, function);
              __pyx_t_28 = 1;
            }
          }
          __pyx_t_40 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8873, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_40);
          if (__pyx_t_44) {
            __Pyx_GIVEREF(__pyx_t_44); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_44); __pyx_t_44 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_40, 2+__pyx_t_28, __pyx_t_7);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_40, 3+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_40, 4+__pyx_t_28, __pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_40, 5+__pyx_t_28, __pyx_t_5);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_40, 6+__pyx_t_28, __pyx_int_1);
          __pyx_t_7 = 0;
          __pyx_t_8 = 0;
          __pyx_t_5 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8873, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
          __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 8873, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_36 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_40 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_36 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_40 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_36);
            __Pyx_INCREF(__pyx_t_40);
            #else
            __pyx_t_36 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8873, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_36);
            __pyx_t_40 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8873, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_40);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8873, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_206 = Py_TYPE(__pyx_t_5)->tp_iternext;
            index = 0; __pyx_t_36 = __pyx_t_206(__pyx_t_5); if (unlikely(!__pyx_t_36)) goto __pyx_L88_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_36);
            index = 1; __pyx_t_40 = __pyx_t_206(__pyx_t_5); if (unlikely(!__pyx_t_40)) goto __pyx_L88_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_40);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_5), 2) < 0) __PYX_ERR(0, 8873, __pyx_L1_error)
            __pyx_t_206 = NULL;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            goto __pyx_L89_unpacking_done;
            __pyx_L88_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_206 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 8873, __pyx_L1_error)
            __pyx_L89_unpacking_done:;
          }
          if (!(likely(((__pyx_t_36) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_36, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8873, __pyx_L1_error)
          if (!(likely(((__pyx_t_40) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_40, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8873, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_36);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8873, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_36));
          __pyx_t_36 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_40);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8873, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_40));
          __pyx_t_40 = 0;
+8874:                     w = 0
          __pyx_v_w = 0;
+8875:                     count = 0
          __pyx_v_count = 0;
+8876:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8877:                         xt = xtrial[w]
            __pyx_t_300 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_300, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+8878:                         yt = ytrial[w]
            __pyx_t_301 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_301, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+8879:                         if I[xt, yt] == 0:
            __pyx_t_302 = __pyx_v_xt;
            __pyx_t_303 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_302, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_303, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
+8880:                             I[xt, yt] = p + count + 1
              __pyx_t_304 = __pyx_v_xt;
              __pyx_t_305 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_304, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_305, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8881:                             X[p + count] = xt
              __pyx_t_306 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_306, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8882:                             Y[p + count] = yt
              __pyx_t_307 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_307, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8883:                             a[p + count] = 1
              __pyx_t_308 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_308, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8884:                             MAJ[p + count] = 1
              __pyx_t_309 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_309, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8885:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, 1, 0)
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8885, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8885, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8885, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_8 = __pyx_v_Rfunc; __pyx_t_7 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_44 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8885, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_44, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_44, 0+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_44, 1+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_44, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_44, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_44, 4+__pyx_t_28, __pyx_int_0);
              __pyx_t_40 = 0;
              __pyx_t_36 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_44, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8885, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8885, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_310 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_310, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8886:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, Rval[p + count])
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8886, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8886, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8886, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_311 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_36 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_311, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8886, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_40 = __pyx_v_Adotfunc; __pyx_t_7 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_40))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_40);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_40);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_40, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_1 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8886, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_28, __pyx_t_36);
              __pyx_t_8 = 0;
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_36 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_40, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8886, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8886, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_312 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_312, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8887:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, Rval[p + count], adotVal[p + count])
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8887, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8887, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8887, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_313 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_313, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8887, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_314 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_44 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_314, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8887, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_8 = __pyx_v_Thetafunc; __pyx_t_7 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_8, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_26 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8887, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_1);
              PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_26, 2+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_26, 3+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_26, 4+__pyx_t_28, __pyx_t_44);
              __pyx_t_40 = 0;
              __pyx_t_1 = 0;
              __pyx_t_36 = 0;
              __pyx_t_5 = 0;
              __pyx_t_44 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8887, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8887, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_315 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_315, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8888:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_316 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_317 = 0;
              __pyx_t_318 = __pyx_v_xt;
              __pyx_t_319 = __pyx_v_yt;
              __pyx_t_320 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_318, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_319, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_320, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_316, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_317, __pyx_pybuffernd_col.diminfo[1].strides));
+8889:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_321 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_322 = 1;
              __pyx_t_323 = __pyx_v_xt;
              __pyx_t_324 = __pyx_v_yt;
              __pyx_t_325 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_323, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_324, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_325, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_321, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_322, __pyx_pybuffernd_col.diminfo[1].strides));
+8890:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_326 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_327 = 2;
              __pyx_t_328 = __pyx_v_xt;
              __pyx_t_329 = __pyx_v_yt;
              __pyx_t_330 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_328, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_329, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_330, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_326, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_327, __pyx_pybuffernd_col.diminfo[1].strides));
+8891:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8892:                         if w < dp - 1:
            __pyx_t_25 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_25) {
/* … */
              goto __pyx_L93;
            }
+8893:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 8894:                         else:
+8895:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8895, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8895, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8895, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8895, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8895, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_36 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_26))) {
                __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_26);
                if (likely(__pyx_t_36)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
                  __Pyx_INCREF(__pyx_t_36);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_26, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_1 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8895, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__pyx_t_36) {
                __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_36); __pyx_t_36 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_28, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_1, 5+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_1, 6+__pyx_t_28, __pyx_int_1);
              __pyx_t_8 = 0;
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8895, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 8895, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_26 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_26 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_26);
                __Pyx_INCREF(__pyx_t_1);
                #else
                __pyx_t_26 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8895, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_26);
                __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8895, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_1);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8895, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_5);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_206 = Py_TYPE(__pyx_t_5)->tp_iternext;
                index = 0; __pyx_t_26 = __pyx_t_206(__pyx_t_5); if (unlikely(!__pyx_t_26)) goto __pyx_L94_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_26);
                index = 1; __pyx_t_1 = __pyx_t_206(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L94_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_1);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_5), 2) < 0) __PYX_ERR(0, 8895, __pyx_L1_error)
                __pyx_t_206 = NULL;
                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                goto __pyx_L95_unpacking_done;
                __pyx_L94_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                __pyx_t_206 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 8895, __pyx_L1_error)
                __pyx_L95_unpacking_done:;
              }
              if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8895, __pyx_L1_error)
              if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8895, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_26);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8895, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_26));
              __pyx_t_26 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8895, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_1));
              __pyx_t_1 = 0;
+8896:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L93:;
          }
+8897:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
+8898:             elif seq == 5:
        case 5:
/* … */
        break;
+8899:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L97_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L97_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L97_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8900:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8900, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8900, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_26);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8900, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8900, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8900, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_44);
          __pyx_t_8 = NULL;
          __pyx_t_28 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_26))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_26);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_26, function);
              __pyx_t_28 = 1;
            }
          }
          __pyx_t_36 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8900, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_36);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_8); __pyx_t_8 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_36, 2+__pyx_t_28, __pyx_t_1);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_36, 3+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_36, 4+__pyx_t_28, __pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_44);
          PyTuple_SET_ITEM(__pyx_t_36, 5+__pyx_t_28, __pyx_t_44);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_36, 6+__pyx_t_28, __pyx_int_1);
          __pyx_t_1 = 0;
          __pyx_t_5 = 0;
          __pyx_t_44 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8900, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
          __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 8900, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_26 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_36 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_26 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_36 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_26);
            __Pyx_INCREF(__pyx_t_36);
            #else
            __pyx_t_26 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8900, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            __pyx_t_36 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8900, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_36);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_44 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8900, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_44);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_206 = Py_TYPE(__pyx_t_44)->tp_iternext;
            index = 0; __pyx_t_26 = __pyx_t_206(__pyx_t_44); if (unlikely(!__pyx_t_26)) goto __pyx_L100_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_26);
            index = 1; __pyx_t_36 = __pyx_t_206(__pyx_t_44); if (unlikely(!__pyx_t_36)) goto __pyx_L100_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_36);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_44), 2) < 0) __PYX_ERR(0, 8900, __pyx_L1_error)
            __pyx_t_206 = NULL;
            __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
            goto __pyx_L101_unpacking_done;
            __pyx_L100_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
            __pyx_t_206 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 8900, __pyx_L1_error)
            __pyx_L101_unpacking_done:;
          }
          if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8900, __pyx_L1_error)
          if (!(likely(((__pyx_t_36) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_36, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8900, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_26);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8900, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_26));
          __pyx_t_26 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_36);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8900, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_36));
          __pyx_t_36 = 0;
+8901:                     w = 0
          __pyx_v_w = 0;
+8902:                     count = 0
          __pyx_v_count = 0;
+8903:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8904:                         xt = xtrial[w]
            __pyx_t_331 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_331, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+8905:                         yt = ytrial[w]
            __pyx_t_332 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_332, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+8906:                         if I[xt, yt] == 0:
            __pyx_t_333 = __pyx_v_xt;
            __pyx_t_334 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_333, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_334, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
+8907:                             I[xt, yt] = p + count + 1
              __pyx_t_335 = __pyx_v_xt;
              __pyx_t_336 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_335, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_336, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8908:                             X[p + count] = xt
              __pyx_t_337 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_337, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8909:                             Y[p + count] = yt
              __pyx_t_338 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_338, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8910:                             a[p + count] = 1
              __pyx_t_339 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_339, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8911:                             MAJ[p + count] = 1
              __pyx_t_340 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_340, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8912:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, 1)
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8912, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8912, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8912, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_5 = __pyx_v_Adotfunc; __pyx_t_1 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_8 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8912, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (__pyx_t_1) {
                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_28, __pyx_t_44);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_36 = 0;
              __pyx_t_26 = 0;
              __pyx_t_44 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8912, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8912, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_341 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_341, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8913:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, 1, adotVal[p + count])
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8913, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8913, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8913, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_342 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_26 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_342, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8913, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_36 = __pyx_v_Thetafunc; __pyx_t_1 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_36))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_36);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_36, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_40 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8913, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              if (__pyx_t_1) {
                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_1); __pyx_t_1 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_40, 2+__pyx_t_28, __pyx_t_44);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_40, 3+__pyx_t_28, __pyx_int_1);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_40, 4+__pyx_t_28, __pyx_t_26);
              __pyx_t_5 = 0;
              __pyx_t_8 = 0;
              __pyx_t_44 = 0;
              __pyx_t_26 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8913, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8913, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_343 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_343, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8914:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, adotVal[p + count], Theta[p + count])
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8914, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8914, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8914, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_344 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_44 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_344, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8914, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_345 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_8 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_345, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8914, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_5 = __pyx_v_Rfunc; __pyx_t_1 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_5, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_7 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8914, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__pyx_t_1) {
                __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_40);
              PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_28, __pyx_t_40);
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_28, __pyx_t_8);
              __pyx_t_36 = 0;
              __pyx_t_40 = 0;
              __pyx_t_26 = 0;
              __pyx_t_44 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8914, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8914, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_346 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_346, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8915:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_347 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_348 = 0;
              __pyx_t_349 = __pyx_v_xt;
              __pyx_t_350 = __pyx_v_yt;
              __pyx_t_351 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_349, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_350, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_351, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_347, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_348, __pyx_pybuffernd_col.diminfo[1].strides));
+8916:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_352 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_353 = 1;
              __pyx_t_354 = __pyx_v_xt;
              __pyx_t_355 = __pyx_v_yt;
              __pyx_t_356 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_354, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_355, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_356, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_352, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_353, __pyx_pybuffernd_col.diminfo[1].strides));
+8917:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_357 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_358 = 2;
              __pyx_t_359 = __pyx_v_xt;
              __pyx_t_360 = __pyx_v_yt;
              __pyx_t_361 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_359, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_360, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_361, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_357, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_358, __pyx_pybuffernd_col.diminfo[1].strides));
+8918:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8919:                         if w < dp - 1:
            __pyx_t_25 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_25) {
/* … */
              goto __pyx_L105;
            }
+8920:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 8921:                         else:
+8922:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8922, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8922, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8922, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8922, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8922, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_26 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
                __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_7);
                if (likely(__pyx_t_26)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                  __Pyx_INCREF(__pyx_t_26);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_7, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_40 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8922, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_40);
              if (__pyx_t_26) {
                __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_40, 0, __pyx_t_26); __pyx_t_26 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_40, 0+__pyx_t_28, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_40, 1+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_40, 2+__pyx_t_28, __pyx_t_5);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_40, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_40, 4+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_40, 5+__pyx_t_28, __pyx_t_44);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_40, 6+__pyx_t_28, __pyx_int_1);
              __pyx_t_5 = 0;
              __pyx_t_8 = 0;
              __pyx_t_44 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_40, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8922, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 8922, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_40 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_40 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_7);
                __Pyx_INCREF(__pyx_t_40);
                #else
                __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8922, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_7);
                __pyx_t_40 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8922, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_40);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_44 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8922, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_44);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_206 = Py_TYPE(__pyx_t_44)->tp_iternext;
                index = 0; __pyx_t_7 = __pyx_t_206(__pyx_t_44); if (unlikely(!__pyx_t_7)) goto __pyx_L106_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_7);
                index = 1; __pyx_t_40 = __pyx_t_206(__pyx_t_44); if (unlikely(!__pyx_t_40)) goto __pyx_L106_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_40);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_44), 2) < 0) __PYX_ERR(0, 8922, __pyx_L1_error)
                __pyx_t_206 = NULL;
                __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
                goto __pyx_L107_unpacking_done;
                __pyx_L106_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
                __pyx_t_206 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 8922, __pyx_L1_error)
                __pyx_L107_unpacking_done:;
              }
              if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8922, __pyx_L1_error)
              if (!(likely(((__pyx_t_40) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_40, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8922, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8922, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_7));
              __pyx_t_7 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_40);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8922, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_40));
              __pyx_t_40 = 0;
+8923:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L105:;
          }
+8924:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
+8925:             elif seq == 6:
        case 6:
/* … */
        break;
        default: break;
      }
    }
    __pyx_L5:;
+8926:                 if dp > 0 and dp <= MN - nnz and nnz < fstop * MN:
        __pyx_t_27 = ((__pyx_v_dp > 0) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L109_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_dp <= (__pyx_v_MN - __pyx_v_nnz)) != 0);
        if (__pyx_t_27) {
        } else {
          __pyx_t_25 = __pyx_t_27;
          goto __pyx_L109_bool_binop_done;
        }
        __pyx_t_27 = ((__pyx_v_nnz < (__pyx_v_fstop * __pyx_v_MN)) != 0);
        __pyx_t_25 = __pyx_t_27;
        __pyx_L109_bool_binop_done:;
        if (__pyx_t_25) {
/* … */
        }
+8927:                     xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
          __pyx_t_40 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8927, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_40);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_40, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8927, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_40); __pyx_t_40 = 0;
          __pyx_t_40 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_40)) __PYX_ERR(0, 8927, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_40);
          __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8927, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_44);
          __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8927, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_5 = NULL;
          __pyx_t_28 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
              __pyx_t_28 = 1;
            }
          }
          __pyx_t_26 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8927, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_26);
          if (__pyx_t_5) {
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_5); __pyx_t_5 = NULL;
          }
          __Pyx_INCREF(__pyx_v_pdelNxy);
          __Pyx_GIVEREF(__pyx_v_pdelNxy);
          PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_v_pdelNxy);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_40);
          PyTuple_SET_ITEM(__pyx_t_26, 2+__pyx_t_28, __pyx_t_40);
          __Pyx_INCREF(__pyx_int_0);
          __Pyx_GIVEREF(__pyx_int_0);
          PyTuple_SET_ITEM(__pyx_t_26, 3+__pyx_t_28, __pyx_int_0);
          __Pyx_GIVEREF(__pyx_t_44);
          PyTuple_SET_ITEM(__pyx_t_26, 4+__pyx_t_28, __pyx_t_44);
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_26, 5+__pyx_t_28, __pyx_t_8);
          __Pyx_INCREF(__pyx_int_1);
          __Pyx_GIVEREF(__pyx_int_1);
          PyTuple_SET_ITEM(__pyx_t_26, 6+__pyx_t_28, __pyx_int_1);
          __pyx_t_40 = 0;
          __pyx_t_44 = 0;
          __pyx_t_8 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_26, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8927, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
            PyObject* sequence = __pyx_t_6;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(0, 8927, __pyx_L1_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_26 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_26 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_26);
            #else
            __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8927, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_26 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8927, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            #endif
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8927, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_206 = Py_TYPE(__pyx_t_8)->tp_iternext;
            index = 0; __pyx_t_7 = __pyx_t_206(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L112_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_7);
            index = 1; __pyx_t_26 = __pyx_t_206(__pyx_t_8); if (unlikely(!__pyx_t_26)) goto __pyx_L112_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_26);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_8), 2) < 0) __PYX_ERR(0, 8927, __pyx_L1_error)
            __pyx_t_206 = NULL;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            goto __pyx_L113_unpacking_done;
            __pyx_L112_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_206 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 8927, __pyx_L1_error)
            __pyx_L113_unpacking_done:;
          }
          if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8927, __pyx_L1_error)
          if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8927, __pyx_L1_error)
          __pyx_t_10 = ((PyArrayObject *)__pyx_t_7);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              }
            }
            __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8927, __pyx_L1_error)
          }
          __pyx_t_10 = 0;
          __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_7));
          __pyx_t_7 = 0;
          __pyx_t_11 = ((PyArrayObject *)__pyx_t_26);
          {
            __Pyx_BufFmt_StackElem __pyx_stack[1];
            __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
            __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
            if (unlikely(__pyx_t_4 < 0)) {
              PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
              if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                __Pyx_RaiseBufferFallbackError();
              } else {
                PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              }
            }
            __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
            if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8927, __pyx_L1_error)
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_26));
          __pyx_t_26 = 0;
+8928:                     w = 0
          __pyx_v_w = 0;
+8929:                     count = 0
          __pyx_v_count = 0;
+8930:                     while count < dp:
          while (1) {
            __pyx_t_25 = ((__pyx_v_count < __pyx_v_dp) != 0);
            if (!__pyx_t_25) break;
+8931:                         xt = xtrial[w]
            __pyx_t_362 = __pyx_v_w;
            __pyx_v_xt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.buf, __pyx_t_362, __pyx_pybuffernd_xtrial.diminfo[0].strides));
+8932:                         yt = ytrial[w]
            __pyx_t_363 = __pyx_v_w;
            __pyx_v_yt = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.buf, __pyx_t_363, __pyx_pybuffernd_ytrial.diminfo[0].strides));
+8933:                         if I[xt, yt] == 0:
            __pyx_t_364 = __pyx_v_xt;
            __pyx_t_365 = __pyx_v_yt;
            __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_364, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_365, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
            if (__pyx_t_25) {
/* … */
            }
+8934:                             I[xt, yt] = p + count + 1
              __pyx_t_366 = __pyx_v_xt;
              __pyx_t_367 = __pyx_v_yt;
              *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_366, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_367, __pyx_pybuffernd_I.diminfo[1].strides) = ((__pyx_v_p + __pyx_v_count) + 1);
+8935:                             X[p + count] = xt
              __pyx_t_368 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_368, __pyx_pybuffernd_X.diminfo[0].strides) = __pyx_v_xt;
+8936:                             Y[p + count] = yt
              __pyx_t_369 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_369, __pyx_pybuffernd_Y.diminfo[0].strides) = __pyx_v_yt;
+8937:                             a[p + count] = 1
              __pyx_t_370 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_370, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+8938:                             MAJ[p + count] = 1
              __pyx_t_371 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_371, __pyx_pybuffernd_MAJ.diminfo[0].strides) = 1.0;
+8939:                             adotVal[p + count] = Adotfunc(xt, yt, p + count + 1, 0, 1)
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8939, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8939, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8939, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_v_Adotfunc);
              __pyx_t_44 = __pyx_v_Adotfunc; __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_44))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_44);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_44, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_5 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8939, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_28, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_28, __pyx_int_1);
              __pyx_t_26 = 0;
              __pyx_t_7 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8939, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8939, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_372 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_372, __pyx_pybuffernd_adotVal.diminfo[0].strides) = __pyx_t_37;
+8940:                             Rval[p + count] = Rfunc(xt, yt, p + count + 1, adotVal[p + count], 0)
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8940, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8940, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8940, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_373 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_7 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_373, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8940, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_INCREF(__pyx_v_Rfunc);
              __pyx_t_26 = __pyx_v_Rfunc; __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_26);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_26, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_36 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8940, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_t_44);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_36, 2+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_36, 3+__pyx_t_28, __pyx_t_7);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_36, 4+__pyx_t_28, __pyx_int_0);
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_8 = 0;
              __pyx_t_7 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8940, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8940, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_374 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_374, __pyx_pybuffernd_Rval.diminfo[0].strides) = __pyx_t_37;
+8941:                             Theta[p + count] = Thetafunc(xt, yt, p + count + 1, Rval[p + count], adotVal[p + count])
              __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_xt); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 8941, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_26);
              __pyx_t_36 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_yt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8941, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(((__pyx_v_p + __pyx_v_count) + 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8941, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_375 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_8 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_375, __pyx_pybuffernd_Rval.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8941, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_376 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_376, __pyx_pybuffernd_adotVal.diminfo[0].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8941, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_v_Thetafunc);
              __pyx_t_44 = __pyx_v_Thetafunc; __pyx_t_40 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_44))) {
                __pyx_t_40 = PyMethod_GET_SELF(__pyx_t_44);
                if (likely(__pyx_t_40)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
                  __Pyx_INCREF(__pyx_t_40);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_44, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_1 = PyTuple_New(5+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8941, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__pyx_t_40) {
                __Pyx_GIVEREF(__pyx_t_40); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_40); __pyx_t_40 = NULL;
              }
              __Pyx_GIVEREF(__pyx_t_26);
              PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, __pyx_t_26);
              __Pyx_GIVEREF(__pyx_t_36);
              PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_t_36);
              __Pyx_GIVEREF(__pyx_t_7);
              PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_28, __pyx_t_7);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_28, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_28, __pyx_t_5);
              __pyx_t_26 = 0;
              __pyx_t_36 = 0;
              __pyx_t_7 = 0;
              __pyx_t_8 = 0;
              __pyx_t_5 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8941, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __pyx_t_37 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_37 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 8941, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_377 = (__pyx_v_p + __pyx_v_count);
              *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_377, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_37;
+8942:                             Col[xt, yt, 2] = col[p + count, 0]
              __pyx_t_378 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_379 = 0;
              __pyx_t_380 = __pyx_v_xt;
              __pyx_t_381 = __pyx_v_yt;
              __pyx_t_382 = 2;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_380, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_381, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_382, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_378, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_379, __pyx_pybuffernd_col.diminfo[1].strides));
+8943:                             Col[xt, yt, 1] = col[p + count, 1]
              __pyx_t_383 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_384 = 1;
              __pyx_t_385 = __pyx_v_xt;
              __pyx_t_386 = __pyx_v_yt;
              __pyx_t_387 = 1;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_385, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_386, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_387, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_383, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_384, __pyx_pybuffernd_col.diminfo[1].strides));
+8944:                             Col[xt, yt, 0] = col[p + count, 2]
              __pyx_t_388 = (__pyx_v_p + __pyx_v_count);
              __pyx_t_389 = 2;
              __pyx_t_390 = __pyx_v_xt;
              __pyx_t_391 = __pyx_v_yt;
              __pyx_t_392 = 0;
              *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_390, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_391, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_392, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_388, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_389, __pyx_pybuffernd_col.diminfo[1].strides));
+8945:                             count = count + 1
              __pyx_v_count = (__pyx_v_count + 1);
+8946:                         if w < dp - 1:
            __pyx_t_25 = ((__pyx_v_w < (__pyx_v_dp - 1)) != 0);
            if (__pyx_t_25) {
/* … */
              goto __pyx_L117;
            }
+8947:                             w = w + 1
              __pyx_v_w = (__pyx_v_w + 1);
 8948:                         else:
+8949:                             xtrial, ytrial = met.MH2D(pdelNxy, 0, m - 1, 0, n - 1, dp, 1)
            /*else*/ {
              __pyx_t_44 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8949, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_44, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8949, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
              __pyx_t_44 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m - 1)); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8949, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_44);
              __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_n - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8949, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_dp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8949, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_8);
              __pyx_t_7 = NULL;
              __pyx_t_28 = 0;
              if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
                if (likely(__pyx_t_7)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                  __Pyx_INCREF(__pyx_t_7);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_1, function);
                  __pyx_t_28 = 1;
                }
              }
              __pyx_t_36 = PyTuple_New(7+__pyx_t_28); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8949, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_36);
              if (__pyx_t_7) {
                __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_36, 0, __pyx_t_7); __pyx_t_7 = NULL;
              }
              __Pyx_INCREF(__pyx_v_pdelNxy);
              __Pyx_GIVEREF(__pyx_v_pdelNxy);
              PyTuple_SET_ITEM(__pyx_t_36, 0+__pyx_t_28, __pyx_v_pdelNxy);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_36, 1+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_44);
              PyTuple_SET_ITEM(__pyx_t_36, 2+__pyx_t_28, __pyx_t_44);
              __Pyx_INCREF(__pyx_int_0);
              __Pyx_GIVEREF(__pyx_int_0);
              PyTuple_SET_ITEM(__pyx_t_36, 3+__pyx_t_28, __pyx_int_0);
              __Pyx_GIVEREF(__pyx_t_5);
              PyTuple_SET_ITEM(__pyx_t_36, 4+__pyx_t_28, __pyx_t_5);
              __Pyx_GIVEREF(__pyx_t_8);
              PyTuple_SET_ITEM(__pyx_t_36, 5+__pyx_t_28, __pyx_t_8);
              __Pyx_INCREF(__pyx_int_1);
              __Pyx_GIVEREF(__pyx_int_1);
              PyTuple_SET_ITEM(__pyx_t_36, 6+__pyx_t_28, __pyx_int_1);
              __pyx_t_44 = 0;
              __pyx_t_5 = 0;
              __pyx_t_8 = 0;
              __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_36, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8949, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
                PyObject* sequence = __pyx_t_6;
                #if CYTHON_COMPILING_IN_CPYTHON
                Py_ssize_t size = Py_SIZE(sequence);
                #else
                Py_ssize_t size = PySequence_Size(sequence);
                #endif
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(0, 8949, __pyx_L1_error)
                }
                #if CYTHON_COMPILING_IN_CPYTHON
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_36 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_36 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_36);
                #else
                __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8949, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_1);
                __pyx_t_36 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8949, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_36);
                #endif
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8949, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_8);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __pyx_t_206 = Py_TYPE(__pyx_t_8)->tp_iternext;
                index = 0; __pyx_t_1 = __pyx_t_206(__pyx_t_8); if (unlikely(!__pyx_t_1)) goto __pyx_L118_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_1);
                index = 1; __pyx_t_36 = __pyx_t_206(__pyx_t_8); if (unlikely(!__pyx_t_36)) goto __pyx_L118_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_36);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_206(__pyx_t_8), 2) < 0) __PYX_ERR(0, 8949, __pyx_L1_error)
                __pyx_t_206 = NULL;
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                goto __pyx_L119_unpacking_done;
                __pyx_L118_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __pyx_t_206 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(0, 8949, __pyx_L1_error)
                __pyx_L119_unpacking_done:;
              }
              if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8949, __pyx_L1_error)
              if (!(likely(((__pyx_t_36) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_36, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 8949, __pyx_L1_error)
              __pyx_t_10 = ((PyArrayObject *)__pyx_t_1);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xtrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_xtrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_23); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_21);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_23, __pyx_t_22, __pyx_t_21);
                  }
                }
                __pyx_pybuffernd_xtrial.diminfo[0].strides = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xtrial.diminfo[0].shape = __pyx_pybuffernd_xtrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8949, __pyx_L1_error)
              }
              __pyx_t_10 = 0;
              __Pyx_DECREF_SET(__pyx_v_xtrial, ((PyArrayObject *)__pyx_t_1));
              __pyx_t_1 = 0;
              __pyx_t_11 = ((PyArrayObject *)__pyx_t_36);
              {
                __Pyx_BufFmt_StackElem __pyx_stack[1];
                __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer);
                __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
                if (unlikely(__pyx_t_4 < 0)) {
                  PyErr_Fetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
                  if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ytrial.rcbuffer->pybuffer, (PyObject*)__pyx_v_ytrial, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
                    Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_22); Py_XDECREF(__pyx_t_23);
                    __Pyx_RaiseBufferFallbackError();
                  } else {
                    PyErr_Restore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
                  }
                }
                __pyx_pybuffernd_ytrial.diminfo[0].strides = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ytrial.diminfo[0].shape = __pyx_pybuffernd_ytrial.rcbuffer->pybuffer.shape[0];
                if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 8949, __pyx_L1_error)
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF_SET(__pyx_v_ytrial, ((PyArrayObject *)__pyx_t_36));
              __pyx_t_36 = 0;
+8950:                             w = 0
              __pyx_v_w = 0;
            }
            __pyx_L117:;
          }
+8951:                     p = p + dp
          __pyx_v_p = (__pyx_v_p + __pyx_v_dp);
 8952: 
 8953: 
+8954:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+8955:         countim = countim + 1
    __pyx_v_countim = (__pyx_v_countim + 1);
 8956: 
 8957: 
+8958:         adotValmax = 0
    __pyx_v_adotValmax = 0.0;
+8959:         for i in range(0, p):
    __pyx_t_393 = __pyx_v_p;
    for (__pyx_t_394 = 0; __pyx_t_394 < __pyx_t_393; __pyx_t_394+=1) {
      __pyx_v_i = __pyx_t_394;
+8960:             if a[i] == 1:
      __pyx_t_395 = __pyx_v_i;
      __pyx_t_25 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_395, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_25) {
/* … */
      }
    }
+8961:                 tmp = adotVal[i]
        __pyx_t_396 = __pyx_v_i;
        __pyx_v_tmp = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_396, __pyx_pybuffernd_adotVal.diminfo[0].strides));
+8962:                 if tmp > adotValmax:
        __pyx_t_25 = ((__pyx_v_tmp > __pyx_v_adotValmax) != 0);
        if (__pyx_t_25) {
/* … */
        }
+8963:                     adotValmax = tmp
          __pyx_v_adotValmax = __pyx_v_tmp;
 8964: 
+8965:         for k in range(0, p):
    __pyx_t_393 = __pyx_v_p;
    for (__pyx_t_394 = 0; __pyx_t_394 < __pyx_t_393; __pyx_t_394+=1) {
      __pyx_v_k = __pyx_t_394;
+8966:             if a[k] == 1:
      __pyx_t_397 = __pyx_v_k;
      __pyx_t_25 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_397, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
      if (__pyx_t_25) {
/* … */
      }
    }
+8967:                 a[k] = 0
        __pyx_t_398 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_398, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+8968:                 xo = X[k]
        __pyx_t_399 = __pyx_v_k;
        __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_399, __pyx_pybuffernd_X.diminfo[0].strides));
+8969:                 yo = Y[k]
        __pyx_t_400 = __pyx_v_k;
        __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_400, __pyx_pybuffernd_Y.diminfo[0].strides));
+8970:                 Io = I[xo, yo]
        __pyx_t_401 = __pyx_v_xo;
        __pyx_t_402 = __pyx_v_yo;
        __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_401, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_402, __pyx_pybuffernd_I.diminfo[1].strides));
+8971:                 theta = Theta[k]
        __pyx_t_403 = __pyx_v_k;
        __pyx_v_theta = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_403, __pyx_pybuffernd_Theta.diminfo[0].strides));
+8972:                 c = math.cos(theta)
        __pyx_t_36 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8972, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_36);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_36, __pyx_n_s_cos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8972, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
        __pyx_t_36 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8972, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_36);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_36); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8972, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8972, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_GIVEREF(__pyx_t_36);
          PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_36);
          __pyx_t_36 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8972, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_6); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 8972, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_v_c = __pyx_t_3;
+8973:                 s = -math.sin(theta)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8973, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8973, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8973, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_36 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_36)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_36);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (!__pyx_t_36) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8973, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8973, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_36); __pyx_t_36 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8973, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = PyNumber_Negative(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8973, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_5); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 8973, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_v_s = __pyx_t_3;
+8974:                 dr = adotVal[k] / adotValmax
        __pyx_t_404 = __pyx_v_k;
        __pyx_v_dr = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_adotVal.rcbuffer->pybuffer.buf, __pyx_t_404, __pyx_pybuffernd_adotVal.diminfo[0].strides)) / ((__pyx_t_5numpy_float64_t)__pyx_v_adotValmax));
+8975:                 MAJ[k] = MAJ[k] + dr
        __pyx_t_405 = __pyx_v_k;
        __pyx_t_406 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_406, __pyx_pybuffernd_MAJ.diminfo[0].strides) = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_405, __pyx_pybuffernd_MAJ.diminfo[0].strides)) + __pyx_v_dr);
+8976:                 Maj = MAJ[k]
        __pyx_t_407 = __pyx_v_k;
        __pyx_v_Maj = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_MAJ.rcbuffer->pybuffer.buf, __pyx_t_407, __pyx_pybuffernd_MAJ.diminfo[0].strides));
+8977:                 Min = Maj / Rval[k]
        __pyx_t_408 = __pyx_v_k;
        __pyx_v_Min = (((__pyx_t_5numpy_float64_t)__pyx_v_Maj) / (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rval.rcbuffer->pybuffer.buf, __pyx_t_408, __pyx_pybuffernd_Rval.diminfo[0].strides)));
+8978:                 delX = math.ceil(math.sqrt((Maj * c) ** 2 + (Min * s) ** 2))
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8978, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ceil); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8978, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8978, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8978, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_36);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyFloat_FromDouble((powf((__pyx_v_Maj * __pyx_v_c), 2.0) + powf((__pyx_v_Min * __pyx_v_s), 2.0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8978, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_44 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_36))) {
          __pyx_t_44 = PyMethod_GET_SELF(__pyx_t_36);
          if (likely(__pyx_t_44)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
            __Pyx_INCREF(__pyx_t_44);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_36, function);
          }
        }
        if (!__pyx_t_44) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_36, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8978, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8978, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_44); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_44); __pyx_t_44 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8978, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
        __pyx_t_36 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_8);
          if (likely(__pyx_t_36)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
            __Pyx_INCREF(__pyx_t_36);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_8, function);
          }
        }
        if (!__pyx_t_36) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8978, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else {
          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8978, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_36); __pyx_t_36 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8978, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_409 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_409 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8978, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_v_delX = __pyx_t_409;
+8979:                 delY = math.ceil(math.sqrt((Maj * s) ** 2 + (Min * c) ** 2))
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8979, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8979, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8979, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 8979, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_36);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyFloat_FromDouble((powf((__pyx_v_Maj * __pyx_v_s), 2.0) + powf((__pyx_v_Min * __pyx_v_c), 2.0))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8979, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_36))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_36);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_36, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_36, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8979, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_8);
        } else {
          __pyx_t_44 = PyTuple_New(1+1); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8979, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_44);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_44, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_44, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_44, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8979, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
        }
        __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
        __pyx_t_36 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_36)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_36);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_36) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8979, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else {
          __pyx_t_44 = PyTuple_New(1+1); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 8979, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_44);
          __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_44, 0, __pyx_t_36); __pyx_t_36 = NULL;
          __Pyx_GIVEREF(__pyx_t_8);
          PyTuple_SET_ITEM(__pyx_t_44, 0+1, __pyx_t_8);
          __pyx_t_8 = 0;
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_44, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8979, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_409 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_409 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 8979, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_v_delY = __pyx_t_409;
+8980:                 red = col[k, 0]
        __pyx_t_409 = __pyx_v_k;
        __pyx_t_410 = 0;
        __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_409, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_410, __pyx_pybuffernd_col.diminfo[1].strides));
+8981:                 green = col[k, 1]
        __pyx_t_411 = __pyx_v_k;
        __pyx_t_412 = 1;
        __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_411, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_412, __pyx_pybuffernd_col.diminfo[1].strides));
+8982:                 blue = col[k, 2]
        __pyx_t_413 = __pyx_v_k;
        __pyx_t_414 = 2;
        __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_413, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_414, __pyx_pybuffernd_col.diminfo[1].strides));
 8983: 
+8984:                 for deli in range(0, delX + 1):
        __pyx_t_415 = (__pyx_v_delX + 1);
        for (__pyx_t_416 = 0; __pyx_t_416 < __pyx_t_415; __pyx_t_416+=1) {
          __pyx_v_deli = __pyx_t_416;
+8985:                     for delj in range(0, delY + 1):
          __pyx_t_417 = (__pyx_v_delY + 1);
          for (__pyx_t_418 = 0; __pyx_t_418 < __pyx_t_417; __pyx_t_418+=1) {
            __pyx_v_delj = __pyx_t_418;
+8986:                         if ((deli * c - delj * s) / Maj) ** 2 + ((deli * s + delj * c) / Min) ** 2 < 1:
            __pyx_t_25 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_Maj), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_Min), 2.0)) < 1.0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
        }
 8987: 
+8988:                             i, j = xo + deli, yo + delj
              __pyx_t_419 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_420 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_419;
              __pyx_v_j = __pyx_t_420;
+8989:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_27 = (0 <= __pyx_v_i);
              if (__pyx_t_27) {
                __pyx_t_27 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_421 = (__pyx_t_27 != 0);
              if (__pyx_t_421) {
              } else {
                __pyx_t_25 = __pyx_t_421;
                goto __pyx_L133_bool_binop_done;
              }
              __pyx_t_421 = (0 <= __pyx_v_j);
              if (__pyx_t_421) {
                __pyx_t_421 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_27 = (__pyx_t_421 != 0);
              __pyx_t_25 = __pyx_t_27;
              __pyx_L133_bool_binop_done:;
              if (__pyx_t_25) {
/* … */
              }
+8990:                                 if I[i, j] == 0:
                __pyx_t_420 = __pyx_v_i;
                __pyx_t_419 = __pyx_v_j;
                __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_420, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_419, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_25) {
/* … */
                }
+8991:                                     for dum in range(1):
                  for (__pyx_t_422 = 0; __pyx_t_422 < 1; __pyx_t_422+=1) {
                    __pyx_v_dum = __pyx_t_422;
 8992: 
+8993:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+8994:                                             if  I[i - 1, j] == Io:
                      __pyx_t_423 = (__pyx_v_i - 1);
                      __pyx_t_424 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_423, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_424, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+8995:                                                 I[i, j] = Io
                        __pyx_t_425 = __pyx_v_i;
                        __pyx_t_426 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_425, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_426, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+8996:                                                 Col[i, j, 2] = red
                        __pyx_t_427 = __pyx_v_i;
                        __pyx_t_428 = __pyx_v_j;
                        __pyx_t_429 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_427, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_428, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_429, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+8997:                                                 Col[i, j, 1] = green
                        __pyx_t_430 = __pyx_v_i;
                        __pyx_t_431 = __pyx_v_j;
                        __pyx_t_432 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_430, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_431, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_432, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+8998:                                                 Col[i, j, 0] = blue
                        __pyx_t_433 = __pyx_v_i;
                        __pyx_t_434 = __pyx_v_j;
                        __pyx_t_435 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_433, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_434, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_435, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+8999:                                                 a[k] = 1
                        __pyx_t_436 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_436, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9000:                                                 break
                        goto __pyx_L137_break;
+9001:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9002:                                             if I[i, j - 1] == Io:
                      __pyx_t_437 = __pyx_v_i;
                      __pyx_t_438 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_437, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_438, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9003:                                                 I[i, j] = Io
                        __pyx_t_439 = __pyx_v_i;
                        __pyx_t_440 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_439, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_440, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9004:                                                 Col[i, j, 2] = red
                        __pyx_t_441 = __pyx_v_i;
                        __pyx_t_442 = __pyx_v_j;
                        __pyx_t_443 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_441, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_442, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_443, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9005:                                                 Col[i, j, 1] = green
                        __pyx_t_444 = __pyx_v_i;
                        __pyx_t_445 = __pyx_v_j;
                        __pyx_t_446 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_444, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_445, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_446, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9006:                                                 Col[i, j, 0] = blue
                        __pyx_t_447 = __pyx_v_i;
                        __pyx_t_448 = __pyx_v_j;
                        __pyx_t_449 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_447, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_448, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_449, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9007:                                                 a[k] = 1
                        __pyx_t_450 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_450, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9008:                                                 break
                        goto __pyx_L137_break;
 9009: 
+9010:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9011:                                             if I[i, j + 1] == Io:
                      __pyx_t_451 = __pyx_v_i;
                      __pyx_t_452 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_451, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_452, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9012:                                                 I[i, j] = Io
                        __pyx_t_453 = __pyx_v_i;
                        __pyx_t_454 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_453, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_454, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9013:                                                 Col[i, j, 2] = red
                        __pyx_t_455 = __pyx_v_i;
                        __pyx_t_456 = __pyx_v_j;
                        __pyx_t_457 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_455, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_456, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_457, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9014:                                                 Col[i, j, 1] = green
                        __pyx_t_458 = __pyx_v_i;
                        __pyx_t_459 = __pyx_v_j;
                        __pyx_t_460 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_458, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_459, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_460, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9015:                                                 Col[i, j, 0] = blue
                        __pyx_t_461 = __pyx_v_i;
                        __pyx_t_462 = __pyx_v_j;
                        __pyx_t_463 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_461, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_462, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_463, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9016:                                                 a[k] = 1
                        __pyx_t_464 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_464, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9017:                                                 break
                        goto __pyx_L137_break;
 9018: 
 9019: 
+9020:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
                  }
                  __pyx_L137_break:;
+9021:                                             if  I[i + 1, j] == Io:
                      __pyx_t_465 = (__pyx_v_i + 1);
                      __pyx_t_466 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_465, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_466, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9022:                                                 I[i, j] = Io
                        __pyx_t_467 = __pyx_v_i;
                        __pyx_t_468 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_467, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_468, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9023:                                                 Col[i, j, 2] = red
                        __pyx_t_469 = __pyx_v_i;
                        __pyx_t_470 = __pyx_v_j;
                        __pyx_t_471 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_469, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_470, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_471, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9024:                                                 Col[i, j, 1] = green
                        __pyx_t_472 = __pyx_v_i;
                        __pyx_t_473 = __pyx_v_j;
                        __pyx_t_474 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_472, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_473, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_474, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9025:                                                 Col[i, j, 0] = blue
                        __pyx_t_475 = __pyx_v_i;
                        __pyx_t_476 = __pyx_v_j;
                        __pyx_t_477 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_475, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_476, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_477, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9026:                                                 a[k] = 1
                        __pyx_t_478 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_478, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9027:                                                 break
                        goto __pyx_L137_break;
 9028: 
 9029: 
+9030:                             i, j = xo - deli, yo - delj
              __pyx_t_422 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_479 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_422;
              __pyx_v_j = __pyx_t_479;
+9031:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_27 = (0 <= __pyx_v_i);
              if (__pyx_t_27) {
                __pyx_t_27 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_421 = (__pyx_t_27 != 0);
              if (__pyx_t_421) {
              } else {
                __pyx_t_25 = __pyx_t_421;
                goto __pyx_L147_bool_binop_done;
              }
              __pyx_t_421 = (0 <= __pyx_v_j);
              if (__pyx_t_421) {
                __pyx_t_421 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_27 = (__pyx_t_421 != 0);
              __pyx_t_25 = __pyx_t_27;
              __pyx_L147_bool_binop_done:;
              if (__pyx_t_25) {
/* … */
              }
+9032:                                 if I[i, j] == 0:
                __pyx_t_479 = __pyx_v_i;
                __pyx_t_422 = __pyx_v_j;
                __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_479, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_422, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_25) {
/* … */
                }
+9033:                                     for dum in range(1):
                  for (__pyx_t_480 = 0; __pyx_t_480 < 1; __pyx_t_480+=1) {
                    __pyx_v_dum = __pyx_t_480;
 9034: 
+9035:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9036:                                             if  I[i - 1, j] == Io:
                      __pyx_t_481 = (__pyx_v_i - 1);
                      __pyx_t_482 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_481, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_482, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9037:                                                 I[i, j] = Io
                        __pyx_t_483 = __pyx_v_i;
                        __pyx_t_484 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_483, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_484, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9038:                                                 Col[i, j, 2] = red
                        __pyx_t_485 = __pyx_v_i;
                        __pyx_t_486 = __pyx_v_j;
                        __pyx_t_487 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_485, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_486, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_487, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9039:                                                 Col[i, j, 1] = green
                        __pyx_t_488 = __pyx_v_i;
                        __pyx_t_489 = __pyx_v_j;
                        __pyx_t_490 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_488, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_489, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_490, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9040:                                                 Col[i, j, 0] = blue
                        __pyx_t_491 = __pyx_v_i;
                        __pyx_t_492 = __pyx_v_j;
                        __pyx_t_493 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_491, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_492, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_493, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9041:                                                 a[k] = 1
                        __pyx_t_494 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_494, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9042:                                                 break
                        goto __pyx_L151_break;
+9043:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9044:                                             if I[i, j - 1] == Io:
                      __pyx_t_495 = __pyx_v_i;
                      __pyx_t_496 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_495, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_496, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9045:                                                 I[i, j] = Io
                        __pyx_t_497 = __pyx_v_i;
                        __pyx_t_498 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_497, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_498, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9046:                                                 Col[i, j, 2] = red
                        __pyx_t_499 = __pyx_v_i;
                        __pyx_t_500 = __pyx_v_j;
                        __pyx_t_501 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_499, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_500, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_501, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9047:                                                 Col[i, j, 1] = green
                        __pyx_t_502 = __pyx_v_i;
                        __pyx_t_503 = __pyx_v_j;
                        __pyx_t_504 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_502, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_503, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_504, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9048:                                                 Col[i, j, 0] = blue
                        __pyx_t_505 = __pyx_v_i;
                        __pyx_t_506 = __pyx_v_j;
                        __pyx_t_507 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_505, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_506, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_507, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9049:                                                 a[k] = 1
                        __pyx_t_508 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_508, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9050:                                                 break
                        goto __pyx_L151_break;
 9051: 
+9052:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9053:                                             if I[i, j + 1] == Io:
                      __pyx_t_509 = __pyx_v_i;
                      __pyx_t_510 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_509, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_510, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9054:                                                 I[i, j] = Io
                        __pyx_t_511 = __pyx_v_i;
                        __pyx_t_512 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_511, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_512, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9055:                                                 Col[i, j, 2] = red
                        __pyx_t_513 = __pyx_v_i;
                        __pyx_t_514 = __pyx_v_j;
                        __pyx_t_515 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_513, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_514, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_515, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9056:                                                 Col[i, j, 1] = green
                        __pyx_t_516 = __pyx_v_i;
                        __pyx_t_517 = __pyx_v_j;
                        __pyx_t_518 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_516, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_517, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_518, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9057:                                                 Col[i, j, 0] = blue
                        __pyx_t_519 = __pyx_v_i;
                        __pyx_t_520 = __pyx_v_j;
                        __pyx_t_521 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_519, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_520, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_521, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9058:                                                 a[k] = 1
                        __pyx_t_522 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_522, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9059:                                                 break
                        goto __pyx_L151_break;
 9060: 
 9061: 
+9062:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
                  }
                  __pyx_L151_break:;
+9063:                                             if  I[i + 1, j] == Io:
                      __pyx_t_523 = (__pyx_v_i + 1);
                      __pyx_t_524 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_523, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_524, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9064:                                                 I[i, j] = Io
                        __pyx_t_525 = __pyx_v_i;
                        __pyx_t_526 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_525, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_526, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9065:                                                 Col[i, j, 2] = red
                        __pyx_t_527 = __pyx_v_i;
                        __pyx_t_528 = __pyx_v_j;
                        __pyx_t_529 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_527, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_528, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_529, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9066:                                                 Col[i, j, 1] = green
                        __pyx_t_530 = __pyx_v_i;
                        __pyx_t_531 = __pyx_v_j;
                        __pyx_t_532 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_530, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_531, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_532, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9067:                                                 Col[i, j, 0] = blue
                        __pyx_t_533 = __pyx_v_i;
                        __pyx_t_534 = __pyx_v_j;
                        __pyx_t_535 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_533, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_534, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_535, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9068:                                                 a[k] = 1
                        __pyx_t_536 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_536, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9069:                                                 break
                        goto __pyx_L151_break;
 9070: 
+9071:                 for deli in range(0, -delX - 1, -1):
        __pyx_t_415 = ((-__pyx_v_delX) - 1);
        for (__pyx_t_416 = 0; __pyx_t_416 > __pyx_t_415; __pyx_t_416-=1) {
          __pyx_v_deli = __pyx_t_416;
+9072:                     for delj in range(0, delY + 1):
          __pyx_t_417 = (__pyx_v_delY + 1);
          for (__pyx_t_418 = 0; __pyx_t_418 < __pyx_t_417; __pyx_t_418+=1) {
            __pyx_v_delj = __pyx_t_418;
+9073:                         if ((deli * c - delj * s) / Maj) ** 2 + ((deli * s + delj * c) / Min) ** 2 < 1:
            __pyx_t_25 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_Maj), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_Min), 2.0)) < 1.0) != 0);
            if (__pyx_t_25) {
/* … */
            }
          }
        }
 9074: 
+9075:                             i, j = xo + deli, yo + delj
              __pyx_t_480 = (__pyx_v_xo + __pyx_v_deli);
              __pyx_t_537 = (__pyx_v_yo + __pyx_v_delj);
              __pyx_v_i = __pyx_t_480;
              __pyx_v_j = __pyx_t_537;
+9076:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_27 = (0 <= __pyx_v_i);
              if (__pyx_t_27) {
                __pyx_t_27 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_421 = (__pyx_t_27 != 0);
              if (__pyx_t_421) {
              } else {
                __pyx_t_25 = __pyx_t_421;
                goto __pyx_L166_bool_binop_done;
              }
              __pyx_t_421 = (0 <= __pyx_v_j);
              if (__pyx_t_421) {
                __pyx_t_421 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_27 = (__pyx_t_421 != 0);
              __pyx_t_25 = __pyx_t_27;
              __pyx_L166_bool_binop_done:;
              if (__pyx_t_25) {
/* … */
              }
+9077:                                 if I[i, j] == 0:
                __pyx_t_537 = __pyx_v_i;
                __pyx_t_480 = __pyx_v_j;
                __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_537, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_480, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_25) {
/* … */
                }
+9078:                                     for dum in range(1):
                  for (__pyx_t_538 = 0; __pyx_t_538 < 1; __pyx_t_538+=1) {
                    __pyx_v_dum = __pyx_t_538;
 9079: 
+9080:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9081:                                             if  I[i - 1, j] == Io:
                      __pyx_t_539 = (__pyx_v_i - 1);
                      __pyx_t_540 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_539, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_540, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9082:                                                 I[i, j] = Io
                        __pyx_t_541 = __pyx_v_i;
                        __pyx_t_542 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_541, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_542, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9083:                                                 Col[i, j, 2] = red
                        __pyx_t_543 = __pyx_v_i;
                        __pyx_t_544 = __pyx_v_j;
                        __pyx_t_545 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_543, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_544, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_545, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9084:                                                 Col[i, j, 1] = green
                        __pyx_t_546 = __pyx_v_i;
                        __pyx_t_547 = __pyx_v_j;
                        __pyx_t_548 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_546, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_547, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_548, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9085:                                                 Col[i, j, 0] = blue
                        __pyx_t_549 = __pyx_v_i;
                        __pyx_t_550 = __pyx_v_j;
                        __pyx_t_551 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_549, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_550, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_551, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9086:                                                 a[k] = 1
                        __pyx_t_552 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_552, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9087:                                                 break
                        goto __pyx_L170_break;
+9088:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9089:                                             if I[i, j - 1] == Io:
                      __pyx_t_553 = __pyx_v_i;
                      __pyx_t_554 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_553, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_554, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9090:                                                 I[i, j] = Io
                        __pyx_t_555 = __pyx_v_i;
                        __pyx_t_556 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_555, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_556, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9091:                                                 Col[i, j, 2] = red
                        __pyx_t_557 = __pyx_v_i;
                        __pyx_t_558 = __pyx_v_j;
                        __pyx_t_559 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_557, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_558, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_559, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9092:                                                 Col[i, j, 1] = green
                        __pyx_t_560 = __pyx_v_i;
                        __pyx_t_561 = __pyx_v_j;
                        __pyx_t_562 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_560, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_561, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_562, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9093:                                                 Col[i, j, 0] = blue
                        __pyx_t_563 = __pyx_v_i;
                        __pyx_t_564 = __pyx_v_j;
                        __pyx_t_565 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_563, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_564, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_565, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9094:                                                 a[k] = 1
                        __pyx_t_566 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_566, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9095:                                                 break
                        goto __pyx_L170_break;
 9096: 
+9097:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9098:                                             if I[i, j + 1] == Io:
                      __pyx_t_567 = __pyx_v_i;
                      __pyx_t_568 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_567, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_568, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9099:                                                 I[i, j] = Io
                        __pyx_t_569 = __pyx_v_i;
                        __pyx_t_570 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_569, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_570, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9100:                                                 Col[i, j, 2] = red
                        __pyx_t_571 = __pyx_v_i;
                        __pyx_t_572 = __pyx_v_j;
                        __pyx_t_573 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_571, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_572, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_573, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9101:                                                 Col[i, j, 1] = green
                        __pyx_t_574 = __pyx_v_i;
                        __pyx_t_575 = __pyx_v_j;
                        __pyx_t_576 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_574, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_575, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_576, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9102:                                                 Col[i, j, 0] = blue
                        __pyx_t_577 = __pyx_v_i;
                        __pyx_t_578 = __pyx_v_j;
                        __pyx_t_579 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_577, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_578, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_579, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9103:                                                 a[k] = 1
                        __pyx_t_580 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_580, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9104:                                                 break
                        goto __pyx_L170_break;
 9105: 
 9106: 
+9107:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
                  }
                  __pyx_L170_break:;
+9108:                                             if  I[i + 1, j] == Io:
                      __pyx_t_581 = (__pyx_v_i + 1);
                      __pyx_t_582 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_581, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_582, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9109:                                                 I[i, j] = Io
                        __pyx_t_583 = __pyx_v_i;
                        __pyx_t_584 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_583, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_584, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9110:                                                 Col[i, j, 2] = red
                        __pyx_t_585 = __pyx_v_i;
                        __pyx_t_586 = __pyx_v_j;
                        __pyx_t_587 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_585, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_586, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_587, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9111:                                                 Col[i, j, 1] = green
                        __pyx_t_588 = __pyx_v_i;
                        __pyx_t_589 = __pyx_v_j;
                        __pyx_t_590 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_588, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_589, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_590, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9112:                                                 Col[i, j, 0] = blue
                        __pyx_t_591 = __pyx_v_i;
                        __pyx_t_592 = __pyx_v_j;
                        __pyx_t_593 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_591, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_592, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_593, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9113:                                                 a[k] = 1
                        __pyx_t_594 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_594, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9114:                                                 break
                        goto __pyx_L170_break;
 9115: 
 9116: 
+9117:                             i, j = xo - deli, yo - delj
              __pyx_t_538 = (__pyx_v_xo - __pyx_v_deli);
              __pyx_t_595 = (__pyx_v_yo - __pyx_v_delj);
              __pyx_v_i = __pyx_t_538;
              __pyx_v_j = __pyx_t_595;
+9118:                             if 0 <= i <= m - 1 and 0 <= j <= n - 1:
              __pyx_t_27 = (0 <= __pyx_v_i);
              if (__pyx_t_27) {
                __pyx_t_27 = (__pyx_v_i <= (__pyx_v_m - 1));
              }
              __pyx_t_421 = (__pyx_t_27 != 0);
              if (__pyx_t_421) {
              } else {
                __pyx_t_25 = __pyx_t_421;
                goto __pyx_L180_bool_binop_done;
              }
              __pyx_t_421 = (0 <= __pyx_v_j);
              if (__pyx_t_421) {
                __pyx_t_421 = (__pyx_v_j <= (__pyx_v_n - 1));
              }
              __pyx_t_27 = (__pyx_t_421 != 0);
              __pyx_t_25 = __pyx_t_27;
              __pyx_L180_bool_binop_done:;
              if (__pyx_t_25) {
/* … */
              }
+9119:                                 if I[i, j] == 0:
                __pyx_t_595 = __pyx_v_i;
                __pyx_t_538 = __pyx_v_j;
                __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_595, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_538, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                if (__pyx_t_25) {
/* … */
                }
+9120:                                     for dum in range(1):
                  for (__pyx_t_596 = 0; __pyx_t_596 < 1; __pyx_t_596+=1) {
                    __pyx_v_dum = __pyx_t_596;
 9121: 
+9122:                                         if i > 0:
                    __pyx_t_25 = ((__pyx_v_i > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9123:                                             if  I[i - 1, j] == Io:
                      __pyx_t_597 = (__pyx_v_i - 1);
                      __pyx_t_598 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_597, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_598, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9124:                                                 I[i, j] = Io
                        __pyx_t_599 = __pyx_v_i;
                        __pyx_t_600 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_599, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_600, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9125:                                                 Col[i, j, 2] = red
                        __pyx_t_601 = __pyx_v_i;
                        __pyx_t_602 = __pyx_v_j;
                        __pyx_t_603 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_601, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_602, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_603, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9126:                                                 Col[i, j, 1] = green
                        __pyx_t_604 = __pyx_v_i;
                        __pyx_t_605 = __pyx_v_j;
                        __pyx_t_606 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_604, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_605, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_606, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9127:                                                 Col[i, j, 0] = blue
                        __pyx_t_607 = __pyx_v_i;
                        __pyx_t_608 = __pyx_v_j;
                        __pyx_t_609 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_607, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_608, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_609, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9128:                                                 a[k] = 1
                        __pyx_t_610 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_610, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9129:                                                 break
                        goto __pyx_L184_break;
+9130:                                         if j > 0:
                    __pyx_t_25 = ((__pyx_v_j > 0) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9131:                                             if I[i, j - 1] == Io:
                      __pyx_t_611 = __pyx_v_i;
                      __pyx_t_612 = (__pyx_v_j - 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_611, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_612, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9132:                                                 I[i, j] = Io
                        __pyx_t_613 = __pyx_v_i;
                        __pyx_t_614 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_613, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_614, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9133:                                                 Col[i, j, 2] = red
                        __pyx_t_615 = __pyx_v_i;
                        __pyx_t_616 = __pyx_v_j;
                        __pyx_t_617 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_615, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_616, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_617, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9134:                                                 Col[i, j, 1] = green
                        __pyx_t_618 = __pyx_v_i;
                        __pyx_t_619 = __pyx_v_j;
                        __pyx_t_620 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_618, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_619, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_620, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9135:                                                 Col[i, j, 0] = blue
                        __pyx_t_621 = __pyx_v_i;
                        __pyx_t_622 = __pyx_v_j;
                        __pyx_t_623 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_621, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_622, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_623, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9136:                                                 a[k] = 1
                        __pyx_t_624 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_624, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9137:                                                 break
                        goto __pyx_L184_break;
 9138: 
+9139:                                         if j < n - 1:
                    __pyx_t_25 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
+9140:                                             if I[i, j + 1] == Io:
                      __pyx_t_625 = __pyx_v_i;
                      __pyx_t_626 = (__pyx_v_j + 1);
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_625, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_626, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9141:                                                 I[i, j] = Io
                        __pyx_t_627 = __pyx_v_i;
                        __pyx_t_628 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_627, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_628, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9142:                                                 Col[i, j, 2] = red
                        __pyx_t_629 = __pyx_v_i;
                        __pyx_t_630 = __pyx_v_j;
                        __pyx_t_631 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_629, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_630, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_631, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9143:                                                 Col[i, j, 1] = green
                        __pyx_t_632 = __pyx_v_i;
                        __pyx_t_633 = __pyx_v_j;
                        __pyx_t_634 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_632, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_633, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_634, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9144:                                                 Col[i, j, 0] = blue
                        __pyx_t_635 = __pyx_v_i;
                        __pyx_t_636 = __pyx_v_j;
                        __pyx_t_637 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_635, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_636, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_637, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9145:                                                 a[k] = 1
                        __pyx_t_638 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_638, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9146:                                                 break
                        goto __pyx_L184_break;
 9147: 
 9148: 
+9149:                                         if i < m - 1:
                    __pyx_t_25 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                    if (__pyx_t_25) {
/* … */
                    }
                  }
                  __pyx_L184_break:;
+9150:                                             if  I[i + 1, j] == Io:
                      __pyx_t_639 = (__pyx_v_i + 1);
                      __pyx_t_640 = __pyx_v_j;
                      __pyx_t_25 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_639, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_640, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                      if (__pyx_t_25) {
/* … */
                      }
+9151:                                                 I[i, j] = Io
                        __pyx_t_641 = __pyx_v_i;
                        __pyx_t_642 = __pyx_v_j;
                        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_641, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_642, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9152:                                                 Col[i, j, 2] = red
                        __pyx_t_643 = __pyx_v_i;
                        __pyx_t_644 = __pyx_v_j;
                        __pyx_t_645 = 2;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_643, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_644, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_645, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9153:                                                 Col[i, j, 1] = green
                        __pyx_t_646 = __pyx_v_i;
                        __pyx_t_647 = __pyx_v_j;
                        __pyx_t_648 = 1;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_646, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_647, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_648, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9154:                                                 Col[i, j, 0] = blue
                        __pyx_t_649 = __pyx_v_i;
                        __pyx_t_650 = __pyx_v_j;
                        __pyx_t_651 = 0;
                        *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_649, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_650, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_651, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9155:                                                 a[k] = 1
                        __pyx_t_652 = __pyx_v_k;
                        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_652, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9156:                                                 break
                        goto __pyx_L184_break;
 9157: 
 9158: 
 9159: 
+9160:                 if a[k] == 0:
        __pyx_t_415 = __pyx_v_k;
        __pyx_t_25 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_415, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
        if (__pyx_t_25) {
/* … */
        }
+9161:                     xmin = max(0, xo - delX)
          __pyx_t_416 = (__pyx_v_xo - __pyx_v_delX);
          __pyx_t_653 = 0;
          if (((__pyx_t_416 > __pyx_t_653) != 0)) {
            __pyx_t_417 = __pyx_t_416;
          } else {
            __pyx_t_417 = __pyx_t_653;
          }
          __pyx_v_xmin = __pyx_t_417;
+9162:                     xmax = min(m - 1, xo + delX)
          __pyx_t_417 = (__pyx_v_xo + __pyx_v_delX);
          __pyx_t_416 = (__pyx_v_m - 1);
          if (((__pyx_t_417 < __pyx_t_416) != 0)) {
            __pyx_t_418 = __pyx_t_417;
          } else {
            __pyx_t_418 = __pyx_t_416;
          }
          __pyx_v_xmax = __pyx_t_418;
+9163:                     ymin = max(0, yo - delY)
          __pyx_t_418 = (__pyx_v_yo - __pyx_v_delY);
          __pyx_t_653 = 0;
          if (((__pyx_t_418 > __pyx_t_653) != 0)) {
            __pyx_t_417 = __pyx_t_418;
          } else {
            __pyx_t_417 = __pyx_t_653;
          }
          __pyx_v_ymin = __pyx_t_417;
+9164:                     ymax = min(n - 1, yo + delY)
          __pyx_t_417 = (__pyx_v_yo + __pyx_v_delY);
          __pyx_t_418 = (__pyx_v_n - 1);
          if (((__pyx_t_417 < __pyx_t_418) != 0)) {
            __pyx_t_416 = __pyx_t_417;
          } else {
            __pyx_t_416 = __pyx_t_418;
          }
          __pyx_v_ymax = __pyx_t_416;
+9165:                     a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
          __pyx_t_416 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_416, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 9166: 
 9167: 
+9168:         showriteframe(sa, sf, fd, countim, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_countim, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+9169:         nnz = cv2.countNonZero(I)
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_44 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 9169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_44);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_44))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_44);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_44, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_44, ((PyObject *)__pyx_v_I)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9169, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9169, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
      __Pyx_INCREF(((PyObject *)__pyx_v_I));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_I));
      PyTuple_SET_ITEM(__pyx_t_8, 0+1, ((PyObject *)__pyx_v_I));
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9169, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
    __pyx_t_393 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_5); if (unlikely((__pyx_t_393 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 9169, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_nnz = __pyx_t_393;
  }
 9170: 
 9171: 
+9172:     obj.p = p
  __pyx_t_5 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_p, __pyx_t_5) < 0) __PYX_ERR(0, 9172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+9173:     toc = time.time()
  __pyx_t_44 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 9173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_44);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_44, __pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
  __pyx_t_44 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_44 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_44)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_44);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (__pyx_t_44) {
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_44); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9173, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
  } else {
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9173, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_24 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_24 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 9173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_toc = __pyx_t_24;
+9174:     obj.exetime = toc - tic
  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_5) < 0) __PYX_ERR(0, 9174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+9175:     obj.X = np.delete(X, np.arange(p, MN))
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_44 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_delete); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_44);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_arange); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = NULL;
  __pyx_t_28 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_36))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_36);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_36, function);
      __pyx_t_28 = 1;
    }
  }
  __pyx_t_26 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (__pyx_t_1) {
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_1); __pyx_t_1 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_6);
  __pyx_t_7 = 0;
  __pyx_t_6 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_26, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
  __pyx_t_36 = NULL;
  __pyx_t_28 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_44))) {
    __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_44);
    if (likely(__pyx_t_36)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_44);
      __Pyx_INCREF(__pyx_t_36);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_44, function);
      __pyx_t_28 = 1;
    }
  }
  __pyx_t_26 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (__pyx_t_36) {
    __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_36); __pyx_t_36 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
  PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_28, ((PyObject *)__pyx_v_X));
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_28, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_44, __pyx_t_26, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, __pyx_t_5) < 0) __PYX_ERR(0, 9175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+9176:     obj.Y = np.delete(Y, np.arange(p, MN))
  __pyx_t_44 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_44);
  __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_44, __pyx_n_s_delete); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  __Pyx_DECREF(__pyx_t_44); __pyx_t_44 = 0;
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_36 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_arange); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_36);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_MN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_28 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_36))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_36);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_36);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_36, function);
      __pyx_t_28 = 1;
    }
  }
  __pyx_t_1 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_t_6);
  __pyx_t_8 = 0;
  __pyx_t_6 = 0;
  __pyx_t_44 = __Pyx_PyObject_Call(__pyx_t_36, __pyx_t_1, NULL); if (unlikely(!__pyx_t_44)) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_44);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
  __pyx_t_36 = NULL;
  __pyx_t_28 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_26))) {
    __pyx_t_36 = PyMethod_GET_SELF(__pyx_t_26);
    if (likely(__pyx_t_36)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
      __Pyx_INCREF(__pyx_t_36);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_26, function);
      __pyx_t_28 = 1;
    }
  }
  __pyx_t_1 = PyTuple_New(2+__pyx_t_28); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__pyx_t_36) {
    __Pyx_GIVEREF(__pyx_t_36); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_36); __pyx_t_36 = NULL;
  }
  __Pyx_INCREF(((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_28, ((PyObject *)__pyx_v_Y));
  __Pyx_GIVEREF(__pyx_t_44);
  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_28, __pyx_t_44);
  __pyx_t_44 = 0;
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_26, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, __pyx_t_5) < 0) __PYX_ERR(0, 9176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+9177:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 9177, __pyx_L1_error)
+9178:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 9178, __pyx_L1_error)
+9179:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;
 9180: 
 9181: 
+9182: def Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot(obj):
/* Python wrapper */
static PyObject *__pyx_pw_9libEVOLVE_61Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static PyMethodDef __pyx_mdef_9libEVOLVE_61Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot = {"Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot", (PyCFunction)__pyx_pw_9libEVOLVE_61Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot, METH_O, 0};
static PyObject *__pyx_pw_9libEVOLVE_61Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot (wrapper)", 0);
  __pyx_r = __pyx_pf_9libEVOLVE_60Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot(__pyx_self, ((PyObject *)__pyx_v_obj));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9libEVOLVE_60Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PY_LONG_LONG __pyx_v_p;
  PY_LONG_LONG __pyx_v_sf;
  PY_LONG_LONG __pyx_v_sa;
  PY_LONG_LONG __pyx_v_m;
  PY_LONG_LONG __pyx_v_n;
  float __pyx_v_Rab;
  float __pyx_v_Rac;
  PyArrayObject *__pyx_v_EUL = 0;
  PY_LONG_LONG __pyx_v_myseed;
  int __pyx_v_framepause;
  int __pyx_v_asy;
  int __pyx_v_labelsorted;
  PyObject *__pyx_v_fd = NULL;
  PyObject *__pyx_v_pdelNxy = NULL;
  double __pyx_v_tic;
  double __pyx_v_toc;
  PY_LONG_LONG __pyx_v_i;
  PY_LONG_LONG __pyx_v_j;
  PY_LONG_LONG __pyx_v_deli;
  PY_LONG_LONG __pyx_v_delj;
  PY_LONG_LONG __pyx_v_xo;
  PY_LONG_LONG __pyx_v_yo;
  PY_LONG_LONG __pyx_v_k;
  PY_LONG_LONG __pyx_v_Io;
  PY_LONG_LONG __pyx_v_delX;
  PY_LONG_LONG __pyx_v_delY;
  PY_LONG_LONG __pyx_v_aAXIS;
  PY_LONG_LONG __pyx_v_Iter;
  CYTHON_UNUSED float __pyx_v_bAXIS;
  CYTHON_UNUSED float __pyx_v_cAXIS;
  float __pyx_v_red;
  float __pyx_v_green;
  float __pyx_v_blue;
  float __pyx_v_theta;
  float __pyx_v_cx;
  float __pyx_v_cy;
  float __pyx_v_MAJ;
  float __pyx_v_MIN;
  float __pyx_v_A;
  float __pyx_v_H;
  float __pyx_v_B;
  float __pyx_v_c;
  float __pyx_v_s;
  float __pyx_v_c2;
  float __pyx_v_s2;
  float __pyx_v_Rab2;
  float __pyx_v_Rac2;
  float __pyx_v_hsc;
  PyArrayObject *__pyx_v_I = 0;
  PyArrayObject *__pyx_v_Iold = 0;
  PyArrayObject *__pyx_v_a = 0;
  PyArrayObject *__pyx_v_X = 0;
  PyArrayObject *__pyx_v_Y = 0;
  PyArrayObject *__pyx_v_col = 0;
  PyArrayObject *__pyx_v_Col = 0;
  PyArrayObject *__pyx_v_Colcanvas = 0;
  PyArrayObject *__pyx_v_major2d = 0;
  PyArrayObject *__pyx_v_minor2d = 0;
  PyArrayObject *__pyx_v_Theta = 0;
  PyArrayObject *__pyx_v_Rot = 0;
  PyArrayObject *__pyx_v_ROT = 0;
  CYTHON_UNUSED long __pyx_v_dum;
  PY_LONG_LONG __pyx_v_xmin;
  PY_LONG_LONG __pyx_v_xmax;
  PY_LONG_LONG __pyx_v_ymin;
  PY_LONG_LONG __pyx_v_ymax;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Col;
  __Pyx_Buffer __pyx_pybuffer_Col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Colcanvas;
  __Pyx_Buffer __pyx_pybuffer_Colcanvas;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_EUL;
  __Pyx_Buffer __pyx_pybuffer_EUL;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_I;
  __Pyx_Buffer __pyx_pybuffer_I;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Iold;
  __Pyx_Buffer __pyx_pybuffer_Iold;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_ROT;
  __Pyx_Buffer __pyx_pybuffer_ROT;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Rot;
  __Pyx_Buffer __pyx_pybuffer_Rot;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Theta;
  __Pyx_Buffer __pyx_pybuffer_Theta;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_X;
  __Pyx_Buffer __pyx_pybuffer_X;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_Y;
  __Pyx_Buffer __pyx_pybuffer_Y;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_a;
  __Pyx_Buffer __pyx_pybuffer_a;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_col;
  __Pyx_Buffer __pyx_pybuffer_col;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_major2d;
  __Pyx_Buffer __pyx_pybuffer_major2d;
  __Pyx_LocalBuf_ND __pyx_pybuffernd_minor2d;
  __Pyx_Buffer __pyx_pybuffer_minor2d;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot", 0);
  __pyx_pybuffer_EUL.pybuffer.buf = NULL;
  __pyx_pybuffer_EUL.refcount = 0;
  __pyx_pybuffernd_EUL.data = NULL;
  __pyx_pybuffernd_EUL.rcbuffer = &__pyx_pybuffer_EUL;
  __pyx_pybuffer_I.pybuffer.buf = NULL;
  __pyx_pybuffer_I.refcount = 0;
  __pyx_pybuffernd_I.data = NULL;
  __pyx_pybuffernd_I.rcbuffer = &__pyx_pybuffer_I;
  __pyx_pybuffer_Iold.pybuffer.buf = NULL;
  __pyx_pybuffer_Iold.refcount = 0;
  __pyx_pybuffernd_Iold.data = NULL;
  __pyx_pybuffernd_Iold.rcbuffer = &__pyx_pybuffer_Iold;
  __pyx_pybuffer_a.pybuffer.buf = NULL;
  __pyx_pybuffer_a.refcount = 0;
  __pyx_pybuffernd_a.data = NULL;
  __pyx_pybuffernd_a.rcbuffer = &__pyx_pybuffer_a;
  __pyx_pybuffer_X.pybuffer.buf = NULL;
  __pyx_pybuffer_X.refcount = 0;
  __pyx_pybuffernd_X.data = NULL;
  __pyx_pybuffernd_X.rcbuffer = &__pyx_pybuffer_X;
  __pyx_pybuffer_Y.pybuffer.buf = NULL;
  __pyx_pybuffer_Y.refcount = 0;
  __pyx_pybuffernd_Y.data = NULL;
  __pyx_pybuffernd_Y.rcbuffer = &__pyx_pybuffer_Y;
  __pyx_pybuffer_col.pybuffer.buf = NULL;
  __pyx_pybuffer_col.refcount = 0;
  __pyx_pybuffernd_col.data = NULL;
  __pyx_pybuffernd_col.rcbuffer = &__pyx_pybuffer_col;
  __pyx_pybuffer_Col.pybuffer.buf = NULL;
  __pyx_pybuffer_Col.refcount = 0;
  __pyx_pybuffernd_Col.data = NULL;
  __pyx_pybuffernd_Col.rcbuffer = &__pyx_pybuffer_Col;
  __pyx_pybuffer_Colcanvas.pybuffer.buf = NULL;
  __pyx_pybuffer_Colcanvas.refcount = 0;
  __pyx_pybuffernd_Colcanvas.data = NULL;
  __pyx_pybuffernd_Colcanvas.rcbuffer = &__pyx_pybuffer_Colcanvas;
  __pyx_pybuffer_major2d.pybuffer.buf = NULL;
  __pyx_pybuffer_major2d.refcount = 0;
  __pyx_pybuffernd_major2d.data = NULL;
  __pyx_pybuffernd_major2d.rcbuffer = &__pyx_pybuffer_major2d;
  __pyx_pybuffer_minor2d.pybuffer.buf = NULL;
  __pyx_pybuffer_minor2d.refcount = 0;
  __pyx_pybuffernd_minor2d.data = NULL;
  __pyx_pybuffernd_minor2d.rcbuffer = &__pyx_pybuffer_minor2d;
  __pyx_pybuffer_Theta.pybuffer.buf = NULL;
  __pyx_pybuffer_Theta.refcount = 0;
  __pyx_pybuffernd_Theta.data = NULL;
  __pyx_pybuffernd_Theta.rcbuffer = &__pyx_pybuffer_Theta;
  __pyx_pybuffer_Rot.pybuffer.buf = NULL;
  __pyx_pybuffer_Rot.refcount = 0;
  __pyx_pybuffernd_Rot.data = NULL;
  __pyx_pybuffernd_Rot.rcbuffer = &__pyx_pybuffer_Rot;
  __pyx_pybuffer_ROT.pybuffer.buf = NULL;
  __pyx_pybuffer_ROT.refcount = 0;
  __pyx_pybuffernd_ROT.data = NULL;
  __pyx_pybuffernd_ROT.rcbuffer = &__pyx_pybuffer_ROT;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_24);
  __Pyx_XDECREF(__pyx_t_26);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_EUL.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ROT.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rot.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_major2d.rcbuffer->pybuffer);
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_minor2d.rcbuffer->pybuffer);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("libEVOLVE.Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_EUL.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ROT.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Rot.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_col.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_major2d.rcbuffer->pybuffer);
  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_minor2d.rcbuffer->pybuffer);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_EUL);
  __Pyx_XDECREF(__pyx_v_fd);
  __Pyx_XDECREF(__pyx_v_pdelNxy);
  __Pyx_XDECREF((PyObject *)__pyx_v_I);
  __Pyx_XDECREF((PyObject *)__pyx_v_Iold);
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_X);
  __Pyx_XDECREF((PyObject *)__pyx_v_Y);
  __Pyx_XDECREF((PyObject *)__pyx_v_col);
  __Pyx_XDECREF((PyObject *)__pyx_v_Col);
  __Pyx_XDECREF((PyObject *)__pyx_v_Colcanvas);
  __Pyx_XDECREF((PyObject *)__pyx_v_major2d);
  __Pyx_XDECREF((PyObject *)__pyx_v_minor2d);
  __Pyx_XDECREF((PyObject *)__pyx_v_Theta);
  __Pyx_XDECREF((PyObject *)__pyx_v_Rot);
  __Pyx_XDECREF((PyObject *)__pyx_v_ROT);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__71 = PyTuple_Pack(72, __pyx_n_s_obj, __pyx_n_s_p, __pyx_n_s_sf, __pyx_n_s_sa, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_Rab, __pyx_n_s_Rac, __pyx_n_s_EUL, __pyx_n_s_myseed, __pyx_n_s_framepause, __pyx_n_s_asy, __pyx_n_s_labelsorted, __pyx_n_s_fd, __pyx_n_s_pdelNxy, __pyx_n_s_tic, __pyx_n_s_toc, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_deli, __pyx_n_s_delj, __pyx_n_s_xo, __pyx_n_s_yo, __pyx_n_s_PN, __pyx_n_s_PE, __pyx_n_s_PW, __pyx_n_s_PS, __pyx_n_s_k, __pyx_n_s_Io, __pyx_n_s_countim, __pyx_n_s_delX, __pyx_n_s_delY, __pyx_n_s_aAXIS, __pyx_n_s_Iter, __pyx_n_s_bAXIS, __pyx_n_s_cAXIS, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue, __pyx_n_s_theta, __pyx_n_s_cx, __pyx_n_s_cy, __pyx_n_s_MAJ, __pyx_n_s_MIN, __pyx_n_s_A, __pyx_n_s_H, __pyx_n_s_B, __pyx_n_s_c, __pyx_n_s_s, __pyx_n_s_c2, __pyx_n_s_s2, __pyx_n_s_Rab2, __pyx_n_s_Rac2, __pyx_n_s_hsc, __pyx_n_s_I, __pyx_n_s_Iold, __pyx_n_s_a, __pyx_n_s_X, __pyx_n_s_Y, __pyx_n_s_col, __pyx_n_s_Col, __pyx_n_s_Colcanvas, __pyx_n_s_major2d, __pyx_n_s_minor2d, __pyx_n_s_Theta, __pyx_n_s_Rot, __pyx_n_s_ROT, __pyx_n_s_dum, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_ymin, __pyx_n_s_ymax); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 9182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__71);
  __Pyx_GIVEREF(__pyx_tuple__71);
/* … */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_9libEVOLVE_61Evolve_2D_Anisotropic_SiteSaturated_Generic_TextureBased_Ellipsoidal_without_ab_without_ac_without_adot, NULL, __pyx_n_s_libEVOLVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Evolve_2D_Anisotropic_SiteSatura_13, __pyx_t_2) < 0) __PYX_ERR(0, 9182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 9183:     # Grabbing data from the input object
+9184:     cdef long long p = obj.p
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 9184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_p = __pyx_t_2;
+9185:     cdef long long sf = obj.sf
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 9185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sf = __pyx_t_2;
+9186:     cdef long long sa = obj.sa
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_sa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 9186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_sa = __pyx_t_2;
+9187:     cdef long long m = obj.m
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 9187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_m = __pyx_t_2;
+9188:     cdef long long n = obj.n
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 9188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n = __pyx_t_2;
+9189:     cdef float Rab = obj.Rab
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Rab); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 9189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_Rab = __pyx_t_3;
+9190:     cdef float Rac = obj.Rac
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_Rac); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 9190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_Rac = __pyx_t_3;
+9191:     cdef np.ndarray[np.float64_t, ndim = 3] EUL = obj.EUL
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_EUL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9191, __pyx_L1_error)
  __pyx_t_4 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_EUL.rcbuffer->pybuffer, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_EUL = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_EUL.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9191, __pyx_L1_error)
    } else {__pyx_pybuffernd_EUL.diminfo[0].strides = __pyx_pybuffernd_EUL.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_EUL.diminfo[0].shape = __pyx_pybuffernd_EUL.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_EUL.diminfo[1].strides = __pyx_pybuffernd_EUL.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_EUL.diminfo[1].shape = __pyx_pybuffernd_EUL.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_EUL.diminfo[2].strides = __pyx_pybuffernd_EUL.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_EUL.diminfo[2].shape = __pyx_pybuffernd_EUL.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_4 = 0;
  __pyx_v_EUL = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+9192:     cdef long long myseed = obj.myseed
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_1); if (unlikely((__pyx_t_2 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 9192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_myseed = __pyx_t_2;
+9193:     cdef int framepause = obj.framepause
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_framepause); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 9193, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_framepause = __pyx_t_5;
+9194:     cdef int asy = obj.asy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_asy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 9194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_asy = __pyx_t_5;
+9195:     cdef int labelsorted = obj.labelsorted
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_labelsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 9195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_labelsorted = __pyx_t_5;
+9196:     fd = obj.fd
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fd = __pyx_t_1;
  __pyx_t_1 = 0;
+9197:     pdelNxy = obj.pdelNxy
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pdelNxy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_pdelNxy = __pyx_t_1;
  __pyx_t_1 = 0;
 9198: 
 9199:     # Declaring other variables
 9200:     cdef double tic, toc
 9201:     cdef long long i, j, deli, delj, xo, yo, PN, PE, PW, PS , k, Io, countim, delX, delY, aAXIS, Iter
 9202:     cdef float bAXIS, cAXIS, red, green, blue, theta, cx, cy, MAJ, MIN, A, H, B, c, s, c2, s2, Rab2, Rac2, hsc
+9203:     cdef np.ndarray[np.int64_t, ndim = 2] I = np.zeros((m, n), dtype=np.int64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
  __pyx_t_1 = 0;
  __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9203, __pyx_L1_error)
  __pyx_t_10 = ((PyArrayObject *)__pyx_t_9);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_I = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_I.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9203, __pyx_L1_error)
    } else {__pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_10 = 0;
  __pyx_v_I = ((PyArrayObject *)__pyx_t_9);
  __pyx_t_9 = 0;
+9204:     cdef np.ndarray[np.int64_t, ndim = 2] Iold = np.zeros((m, n), dtype=np.int64)
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
  __pyx_t_9 = 0;
  __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9204, __pyx_L1_error)
  __pyx_t_11 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_Iold = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Iold.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9204, __pyx_L1_error)
    } else {__pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_11 = 0;
  __pyx_v_Iold = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+9205:     cdef np.ndarray[np.int8_t, ndim = 1] a = np.ones(p, dtype=np.int8)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 9205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9205, __pyx_L1_error)
  __pyx_t_12 = ((PyArrayObject *)__pyx_t_9);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_a = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_a.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9205, __pyx_L1_error)
    } else {__pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_12 = 0;
  __pyx_v_a = ((PyArrayObject *)__pyx_t_9);
  __pyx_t_9 = 0;
+9206:     cdef np.ndarray[np.int64_t, ndim = 1] X = np.zeros(p, dtype=np.int64)
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 9206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9206, __pyx_L1_error)
  __pyx_t_13 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_X = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_X.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9206, __pyx_L1_error)
    } else {__pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_13 = 0;
  __pyx_v_X = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+9207:     cdef np.ndarray[np.int64_t, ndim = 1] Y = np.zeros(p, dtype=np.int64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 9207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9207, __pyx_L1_error)
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Y = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9207, __pyx_L1_error)
    } else {__pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_14 = 0;
  __pyx_v_Y = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;
+9208:     cdef np.ndarray[np.float64_t, ndim = 2] col = np.zeros((p, 3), dtype=np.float64)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_3);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 9208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9208, __pyx_L1_error)
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_col.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
      __pyx_v_col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9208, __pyx_L1_error)
    } else {__pyx_pybuffernd_col.diminfo[0].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_col.diminfo[0].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_col.diminfo[1].strides = __pyx_pybuffernd_col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_col.diminfo[1].shape = __pyx_pybuffernd_col.rcbuffer->pybuffer.shape[1];
    }
  }
  __pyx_t_15 = 0;
  __pyx_v_col = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+9209:     cdef np.ndarray[np.float64_t, ndim = 3] Col = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9209, __pyx_L1_error)
  __pyx_t_16 = ((PyArrayObject *)__pyx_t_9);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Col.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Col = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9209, __pyx_L1_error)
    } else {__pyx_pybuffernd_Col.diminfo[0].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Col.diminfo[0].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Col.diminfo[1].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Col.diminfo[1].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Col.diminfo[2].strides = __pyx_pybuffernd_Col.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Col.diminfo[2].shape = __pyx_pybuffernd_Col.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_16 = 0;
  __pyx_v_Col = ((PyArrayObject *)__pyx_t_9);
  __pyx_t_9 = 0;
+9210:     cdef np.ndarray[np.float64_t, ndim = 3] Colcanvas = np.zeros((m, n, 3), dtype=np.float64)
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_int_3);
  __pyx_t_9 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9210, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Colcanvas = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9210, __pyx_L1_error)
    } else {__pyx_pybuffernd_Colcanvas.diminfo[0].strides = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Colcanvas.diminfo[0].shape = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Colcanvas.diminfo[1].strides = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Colcanvas.diminfo[1].shape = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Colcanvas.diminfo[2].strides = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Colcanvas.diminfo[2].shape = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_17 = 0;
  __pyx_v_Colcanvas = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+9211:     cdef np.ndarray[np.float64_t, ndim = 1] major2d = np.zeros(p, dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 9211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9211, __pyx_L1_error)
  __pyx_t_18 = ((PyArrayObject *)__pyx_t_9);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_major2d.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_major2d = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_major2d.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9211, __pyx_L1_error)
    } else {__pyx_pybuffernd_major2d.diminfo[0].strides = __pyx_pybuffernd_major2d.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_major2d.diminfo[0].shape = __pyx_pybuffernd_major2d.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_18 = 0;
  __pyx_v_major2d = ((PyArrayObject *)__pyx_t_9);
  __pyx_t_9 = 0;
+9212:     cdef np.ndarray[np.float64_t, ndim = 1] minor2d = np.zeros(p, dtype=np.float64)
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 9212, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9212, __pyx_L1_error)
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_minor2d.rcbuffer->pybuffer, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_minor2d = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_minor2d.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9212, __pyx_L1_error)
    } else {__pyx_pybuffernd_minor2d.diminfo[0].strides = __pyx_pybuffernd_minor2d.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_minor2d.diminfo[0].shape = __pyx_pybuffernd_minor2d.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_19 = 0;
  __pyx_v_minor2d = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;
+9213:     cdef np.ndarray[np.float64_t, ndim = 1] Theta = np.zeros(p, dtype=np.float64)
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 9213, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9213, __pyx_L1_error)
  __pyx_t_20 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Theta.rcbuffer->pybuffer, (PyObject*)__pyx_t_20, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_Theta = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9213, __pyx_L1_error)
    } else {__pyx_pybuffernd_Theta.diminfo[0].strides = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Theta.diminfo[0].shape = __pyx_pybuffernd_Theta.rcbuffer->pybuffer.shape[0];
    }
  }
  __pyx_t_20 = 0;
  __pyx_v_Theta = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;
+9214:     cdef np.ndarray[np.float64_t, ndim = 3] Rot = np.zeros((p, 3, 3), dtype=np.float64)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_3);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_int_3);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 9214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9214, __pyx_L1_error)
  __pyx_t_21 = ((PyArrayObject *)__pyx_t_1);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Rot.rcbuffer->pybuffer, (PyObject*)__pyx_t_21, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 3, 0, __pyx_stack) == -1)) {
      __pyx_v_Rot = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9214, __pyx_L1_error)
    } else {__pyx_pybuffernd_Rot.diminfo[0].strides = __pyx_pybuffernd_Rot.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Rot.diminfo[0].shape = __pyx_pybuffernd_Rot.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Rot.diminfo[1].strides = __pyx_pybuffernd_Rot.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Rot.diminfo[1].shape = __pyx_pybuffernd_Rot.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Rot.diminfo[2].strides = __pyx_pybuffernd_Rot.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Rot.diminfo[2].shape = __pyx_pybuffernd_Rot.rcbuffer->pybuffer.shape[2];
    }
  }
  __pyx_t_21 = 0;
  __pyx_v_Rot = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+9215:     cdef np.ndarray[np.float64_t, ndim = 4] ROT = np.zeros((m, n, 3, 3), dtype=np.float64)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_int_3);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_int_3);
  __pyx_t_1 = 0;
  __pyx_t_7 = 0;
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float64); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_9) < 0) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9215, __pyx_L1_error)
  __pyx_t_22 = ((PyArrayObject *)__pyx_t_9);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ROT.rcbuffer->pybuffer, (PyObject*)__pyx_t_22, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {
      __pyx_v_ROT = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ROT.rcbuffer->pybuffer.buf = NULL;
      __PYX_ERR(0, 9215, __pyx_L1_error)
    } else {__pyx_pybuffernd_ROT.diminfo[0].strides = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ROT.diminfo[0].shape = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_ROT.diminfo[1].strides = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_ROT.diminfo[1].shape = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_ROT.diminfo[2].strides = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_ROT.diminfo[2].shape = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_ROT.diminfo[3].strides = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_ROT.diminfo[3].shape = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.shape[3];
    }
  }
  __pyx_t_22 = 0;
  __pyx_v_ROT = ((PyArrayObject *)__pyx_t_9);
  __pyx_t_9 = 0;
 9216: 
+9217:     ROT = conv.zxz_to_rm(EUL.reshape(m * n, 3)).reshape(m, n, 3, 3)
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_conv); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zxz_to_rm); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_EUL), __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_23 = __Pyx_PyInt_From_PY_LONG_LONG((__pyx_v_m * __pyx_v_n)); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_23);
  __pyx_t_24 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_24)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_24);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_26 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (__pyx_t_24) {
    __Pyx_GIVEREF(__pyx_t_24); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_24); __pyx_t_24 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_23);
  PyTuple_SET_ITEM(__pyx_t_26, 0+__pyx_t_25, __pyx_t_23);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_26, 1+__pyx_t_25, __pyx_int_3);
  __pyx_t_23 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_26, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9217, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_8);
  } else {
    __pyx_t_26 = PyTuple_New(1+1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_26);
    __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_1); __pyx_t_1 = NULL;
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_26, 0+1, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_26, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  __pyx_t_7 = NULL;
  __pyx_t_25 = 0;
  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_25 = 1;
    }
  }
  __pyx_t_1 = PyTuple_New(4+__pyx_t_25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__pyx_t_7) {
    __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
  }
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_25, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_26);
  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_25, __pyx_t_26);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_25, __pyx_int_3);
  __Pyx_INCREF(__pyx_int_3);
  __Pyx_GIVEREF(__pyx_int_3);
  PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_25, __pyx_int_3);
  __pyx_t_8 = 0;
  __pyx_t_26 = 0;
  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9217, __pyx_L1_error)
  __pyx_t_22 = ((PyArrayObject *)__pyx_t_9);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ROT.rcbuffer->pybuffer);
    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ROT.rcbuffer->pybuffer, (PyObject*)__pyx_t_22, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack);
    if (unlikely(__pyx_t_5 < 0)) {
      PyErr_Fetch(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ROT.rcbuffer->pybuffer, (PyObject*)__pyx_v_ROT, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 4, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_27); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_29);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_27, __pyx_t_28, __pyx_t_29);
      }
    }
    __pyx_pybuffernd_ROT.diminfo[0].strides = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ROT.diminfo[0].shape = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_ROT.diminfo[1].strides = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_ROT.diminfo[1].shape = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_ROT.diminfo[2].strides = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_ROT.diminfo[2].shape = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.shape[2]; __pyx_pybuffernd_ROT.diminfo[3].strides = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.strides[3]; __pyx_pybuffernd_ROT.diminfo[3].shape = __pyx_pybuffernd_ROT.rcbuffer->pybuffer.shape[3];
    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9217, __pyx_L1_error)
  }
  __pyx_t_22 = 0;
  __Pyx_DECREF_SET(__pyx_v_ROT, ((PyArrayObject *)__pyx_t_9));
  __pyx_t_9 = 0;
 9218: 
+9219:     plantseed(myseed)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_plantseed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_myseed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_26 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_26)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_26);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_26) {
    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9219, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_9);
  } else {
    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_26); __pyx_t_26 = NULL;
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+9220:     Colcanvas = COLOR.EULToCol(EUL)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_COLOR); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_EULToCol); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_8, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, ((PyObject *)__pyx_v_EUL)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
  } else {
    __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
    __Pyx_INCREF(((PyObject *)__pyx_v_EUL));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_EUL));
    PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_EUL));
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9220, __pyx_L1_error)
  __pyx_t_17 = ((PyArrayObject *)__pyx_t_9);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer);
    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack);
    if (unlikely(__pyx_t_5 < 0)) {
      PyErr_Fetch(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer, (PyObject*)__pyx_v_Colcanvas, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 3, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_29); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_27);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_29, __pyx_t_28, __pyx_t_27);
      }
    }
    __pyx_pybuffernd_Colcanvas.diminfo[0].strides = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Colcanvas.diminfo[0].shape = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Colcanvas.diminfo[1].strides = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Colcanvas.diminfo[1].shape = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.shape[1]; __pyx_pybuffernd_Colcanvas.diminfo[2].strides = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.strides[2]; __pyx_pybuffernd_Colcanvas.diminfo[2].shape = __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.shape[2];
    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9220, __pyx_L1_error)
  }
  __pyx_t_17 = 0;
  __Pyx_DECREF_SET(__pyx_v_Colcanvas, ((PyArrayObject *)__pyx_t_9));
  __pyx_t_9 = 0;
+9221:     setwindows(sa);tic = time.time()
  __pyx_f_9libEVOLVE_setwindows(__pyx_v_sa);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (__pyx_t_8) {
    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9221, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9221, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_30 = __pyx_PyFloat_AsDouble(__pyx_t_9); if (unlikely((__pyx_t_30 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 9221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_v_tic = __pyx_t_30;
 9222: 
+9223:     if pdelNxy == []:
  __pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_pdelNxy, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9223, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_31 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_31 < 0)) __PYX_ERR(0, 9223, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_31) {
/* … */
    goto __pyx_L3;
  }
+9224:         [X, Y] = randindex2D(m, n, p)
    __pyx_t_1 = __pyx_f_9libEVOLVE_randindex2D(__pyx_v_m, __pyx_v_n, __pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
      PyObject* sequence = __pyx_t_1;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 9224, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_8);
      #else
      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_32 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_9 = __pyx_t_32(__pyx_t_6); if (unlikely(!__pyx_t_9)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      index = 1; __pyx_t_8 = __pyx_t_32(__pyx_t_6); if (unlikely(!__pyx_t_8)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_32(__pyx_t_6), 2) < 0) __PYX_ERR(0, 9224, __pyx_L1_error)
      __pyx_t_32 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_32 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 9224, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9224, __pyx_L1_error)
    if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9224, __pyx_L1_error)
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_9);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_5 < 0)) {
        PyErr_Fetch(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_27); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_29);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_27, __pyx_t_28, __pyx_t_29);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9224, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_9));
    __pyx_t_9 = 0;
    __pyx_t_14 = ((PyArrayObject *)__pyx_t_8);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_5 < 0)) {
        PyErr_Fetch(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_29); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_27);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_29, __pyx_t_28, __pyx_t_27);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9224, __pyx_L1_error)
    }
    __pyx_t_14 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_8));
    __pyx_t_8 = 0;
 9225:     else:
+9226:         X, Y = met.MH2D(pdelNxy, 0, m, 0, n, p, 1)
  /*else*/ {
    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_met); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_MH2D); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_26);
    __pyx_t_7 = NULL;
    __pyx_t_25 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
        __pyx_t_25 = 1;
      }
    }
    __pyx_t_23 = PyTuple_New(7+__pyx_t_25); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_INCREF(__pyx_v_pdelNxy);
    __Pyx_GIVEREF(__pyx_v_pdelNxy);
    PyTuple_SET_ITEM(__pyx_t_23, 0+__pyx_t_25, __pyx_v_pdelNxy);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_23, 1+__pyx_t_25, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_23, 2+__pyx_t_25, __pyx_t_8);
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_GIVEREF(__pyx_int_0);
    PyTuple_SET_ITEM(__pyx_t_23, 3+__pyx_t_25, __pyx_int_0);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_23, 4+__pyx_t_25, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_26);
    PyTuple_SET_ITEM(__pyx_t_23, 5+__pyx_t_25, __pyx_t_26);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_23, 6+__pyx_t_25, __pyx_int_1);
    __pyx_t_8 = 0;
    __pyx_t_6 = 0;
    __pyx_t_26 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
      PyObject* sequence = __pyx_t_1;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 9226, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_23 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_23 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_23);
      #else
      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_23 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_26 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_26);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_32 = Py_TYPE(__pyx_t_26)->tp_iternext;
      index = 0; __pyx_t_9 = __pyx_t_32(__pyx_t_26); if (unlikely(!__pyx_t_9)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      index = 1; __pyx_t_23 = __pyx_t_32(__pyx_t_26); if (unlikely(!__pyx_t_23)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_23);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_32(__pyx_t_26), 2) < 0) __PYX_ERR(0, 9226, __pyx_L1_error)
      __pyx_t_32 = NULL;
      __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
      __pyx_t_32 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 9226, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9226, __pyx_L1_error)
    if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9226, __pyx_L1_error)
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_9);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_5 < 0)) {
        PyErr_Fetch(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_27); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_29);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_27, __pyx_t_28, __pyx_t_29);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9226, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_9));
    __pyx_t_9 = 0;
    __pyx_t_14 = ((PyArrayObject *)__pyx_t_23);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_5 < 0)) {
        PyErr_Fetch(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_29); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_27);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_29, __pyx_t_28, __pyx_t_27);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9226, __pyx_L1_error)
    }
    __pyx_t_14 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_23));
    __pyx_t_23 = 0;
  }
  __pyx_L3:;
 9227: 
+9228:     if labelsorted == 1:
  __pyx_t_31 = ((__pyx_v_labelsorted == 1) != 0);
  if (__pyx_t_31) {
/* … */
  }
+9229:         X, Y = labelsort(n, X, Y)
    __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_labelsort); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    __pyx_t_9 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_26 = NULL;
    __pyx_t_25 = 0;
    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
      __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_23);
      if (likely(__pyx_t_26)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
        __Pyx_INCREF(__pyx_t_26);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_23, function);
        __pyx_t_25 = 1;
      }
    }
    __pyx_t_6 = PyTuple_New(3+__pyx_t_25); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_26) {
      __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_26); __pyx_t_26 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_9);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_25, __pyx_t_9);
    __Pyx_INCREF(((PyObject *)__pyx_v_X));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_X));
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_25, ((PyObject *)__pyx_v_X));
    __Pyx_INCREF(((PyObject *)__pyx_v_Y));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_Y));
    PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_25, ((PyObject *)__pyx_v_Y));
    __pyx_t_9 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
      PyObject* sequence = __pyx_t_1;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 9229, __pyx_L1_error)
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_23 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_23 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_23);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_23 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_32 = Py_TYPE(__pyx_t_9)->tp_iternext;
      index = 0; __pyx_t_23 = __pyx_t_32(__pyx_t_9); if (unlikely(!__pyx_t_23)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_23);
      index = 1; __pyx_t_6 = __pyx_t_32(__pyx_t_9); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_32(__pyx_t_9), 2) < 0) __PYX_ERR(0, 9229, __pyx_L1_error)
      __pyx_t_32 = NULL;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L10_unpacking_done;
      __pyx_L9_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_32 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 9229, __pyx_L1_error)
      __pyx_L10_unpacking_done:;
    }
    if (!(likely(((__pyx_t_23) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_23, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9229, __pyx_L1_error)
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9229, __pyx_L1_error)
    __pyx_t_13 = ((PyArrayObject *)__pyx_t_23);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
      __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_5 < 0)) {
        PyErr_Fetch(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_27); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_29);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_27, __pyx_t_28, __pyx_t_29);
        }
      }
      __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9229, __pyx_L1_error)
    }
    __pyx_t_13 = 0;
    __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_23));
    __pyx_t_23 = 0;
    __pyx_t_14 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
      __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_5 < 0)) {
        PyErr_Fetch(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_29); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_27);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_29, __pyx_t_28, __pyx_t_27);
        }
      }
      __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
      if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9229, __pyx_L1_error)
    }
    __pyx_t_14 = 0;
    __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;
 9230: 
 9231: 
+9232:     Iter = 1
  __pyx_v_Iter = 1;
+9233:     Rab2 = Rab ** 2
  __pyx_v_Rab2 = powf(__pyx_v_Rab, 2.0);
+9234:     Rac2 = Rac ** 2
  __pyx_v_Rac2 = powf(__pyx_v_Rac, 2.0);
 9235: 
 9236: 
+9237:     while True:
  while (1) {
+9238:         aAXIS = 0
    __pyx_v_aAXIS = 0;
+9239:         for k in range(0, p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_33 = 0; __pyx_t_33 < __pyx_t_2; __pyx_t_33+=1) {
      __pyx_v_k = __pyx_t_33;
+9240:             I[X[k], Y[k]] = k + 1
      __pyx_t_34 = __pyx_v_k;
      __pyx_t_35 = __pyx_v_k;
      __pyx_t_36 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_34, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_37 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_35, __pyx_pybuffernd_Y.diminfo[0].strides));
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_36, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_37, __pyx_pybuffernd_I.diminfo[1].strides) = (__pyx_v_k + 1);
+9241:             Rot[k, 0, 0] = ROT[X[k], Y[k], 0, 0]
      __pyx_t_38 = __pyx_v_k;
      __pyx_t_39 = __pyx_v_k;
      __pyx_t_40 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_38, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_41 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_39, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_42 = 0;
      __pyx_t_43 = 0;
      __pyx_t_44 = __pyx_v_k;
      __pyx_t_45 = 0;
      __pyx_t_46 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_44, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_45, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_46, __pyx_pybuffernd_Rot.diminfo[2].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_ROT.rcbuffer->pybuffer.buf, __pyx_t_40, __pyx_pybuffernd_ROT.diminfo[0].strides, __pyx_t_41, __pyx_pybuffernd_ROT.diminfo[1].strides, __pyx_t_42, __pyx_pybuffernd_ROT.diminfo[2].strides, __pyx_t_43, __pyx_pybuffernd_ROT.diminfo[3].strides));
+9242:             Rot[k, 0, 1] = ROT[X[k], Y[k], 0, 1]
      __pyx_t_47 = __pyx_v_k;
      __pyx_t_48 = __pyx_v_k;
      __pyx_t_49 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_47, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_50 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_48, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_51 = 0;
      __pyx_t_52 = 1;
      __pyx_t_53 = __pyx_v_k;
      __pyx_t_54 = 0;
      __pyx_t_55 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_53, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_54, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_55, __pyx_pybuffernd_Rot.diminfo[2].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_ROT.rcbuffer->pybuffer.buf, __pyx_t_49, __pyx_pybuffernd_ROT.diminfo[0].strides, __pyx_t_50, __pyx_pybuffernd_ROT.diminfo[1].strides, __pyx_t_51, __pyx_pybuffernd_ROT.diminfo[2].strides, __pyx_t_52, __pyx_pybuffernd_ROT.diminfo[3].strides));
+9243:             Rot[k, 0, 2] = ROT[X[k], Y[k], 0, 2]
      __pyx_t_56 = __pyx_v_k;
      __pyx_t_57 = __pyx_v_k;
      __pyx_t_58 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_56, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_59 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_57, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_60 = 0;
      __pyx_t_61 = 2;
      __pyx_t_62 = __pyx_v_k;
      __pyx_t_63 = 0;
      __pyx_t_64 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_62, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_63, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_64, __pyx_pybuffernd_Rot.diminfo[2].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_ROT.rcbuffer->pybuffer.buf, __pyx_t_58, __pyx_pybuffernd_ROT.diminfo[0].strides, __pyx_t_59, __pyx_pybuffernd_ROT.diminfo[1].strides, __pyx_t_60, __pyx_pybuffernd_ROT.diminfo[2].strides, __pyx_t_61, __pyx_pybuffernd_ROT.diminfo[3].strides));
+9244:             Rot[k, 1, 0] = ROT[X[k], Y[k], 1, 0]
      __pyx_t_65 = __pyx_v_k;
      __pyx_t_66 = __pyx_v_k;
      __pyx_t_67 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_65, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_68 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_66, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_69 = 1;
      __pyx_t_70 = 0;
      __pyx_t_71 = __pyx_v_k;
      __pyx_t_72 = 1;
      __pyx_t_73 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_71, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_72, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_73, __pyx_pybuffernd_Rot.diminfo[2].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_ROT.rcbuffer->pybuffer.buf, __pyx_t_67, __pyx_pybuffernd_ROT.diminfo[0].strides, __pyx_t_68, __pyx_pybuffernd_ROT.diminfo[1].strides, __pyx_t_69, __pyx_pybuffernd_ROT.diminfo[2].strides, __pyx_t_70, __pyx_pybuffernd_ROT.diminfo[3].strides));
+9245:             Rot[k, 1, 1] = ROT[X[k], Y[k], 1, 1]
      __pyx_t_74 = __pyx_v_k;
      __pyx_t_75 = __pyx_v_k;
      __pyx_t_76 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_74, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_77 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_75, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_78 = 1;
      __pyx_t_79 = 1;
      __pyx_t_80 = __pyx_v_k;
      __pyx_t_81 = 1;
      __pyx_t_82 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_80, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_81, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_82, __pyx_pybuffernd_Rot.diminfo[2].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_ROT.rcbuffer->pybuffer.buf, __pyx_t_76, __pyx_pybuffernd_ROT.diminfo[0].strides, __pyx_t_77, __pyx_pybuffernd_ROT.diminfo[1].strides, __pyx_t_78, __pyx_pybuffernd_ROT.diminfo[2].strides, __pyx_t_79, __pyx_pybuffernd_ROT.diminfo[3].strides));
+9246:             Rot[k, 1, 2] = ROT[X[k], Y[k], 1, 2]
      __pyx_t_83 = __pyx_v_k;
      __pyx_t_84 = __pyx_v_k;
      __pyx_t_85 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_83, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_86 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_84, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_87 = 1;
      __pyx_t_88 = 2;
      __pyx_t_89 = __pyx_v_k;
      __pyx_t_90 = 1;
      __pyx_t_91 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_89, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_90, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_91, __pyx_pybuffernd_Rot.diminfo[2].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_ROT.rcbuffer->pybuffer.buf, __pyx_t_85, __pyx_pybuffernd_ROT.diminfo[0].strides, __pyx_t_86, __pyx_pybuffernd_ROT.diminfo[1].strides, __pyx_t_87, __pyx_pybuffernd_ROT.diminfo[2].strides, __pyx_t_88, __pyx_pybuffernd_ROT.diminfo[3].strides));
+9247:             Rot[k, 2, 0] = ROT[X[k], Y[k], 2, 0]
      __pyx_t_92 = __pyx_v_k;
      __pyx_t_93 = __pyx_v_k;
      __pyx_t_94 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_92, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_95 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_93, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_96 = 2;
      __pyx_t_97 = 0;
      __pyx_t_98 = __pyx_v_k;
      __pyx_t_99 = 2;
      __pyx_t_100 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_98, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_99, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_100, __pyx_pybuffernd_Rot.diminfo[2].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_ROT.rcbuffer->pybuffer.buf, __pyx_t_94, __pyx_pybuffernd_ROT.diminfo[0].strides, __pyx_t_95, __pyx_pybuffernd_ROT.diminfo[1].strides, __pyx_t_96, __pyx_pybuffernd_ROT.diminfo[2].strides, __pyx_t_97, __pyx_pybuffernd_ROT.diminfo[3].strides));
+9248:             Rot[k, 2, 1] = ROT[X[k], Y[k], 2, 1]
      __pyx_t_101 = __pyx_v_k;
      __pyx_t_102 = __pyx_v_k;
      __pyx_t_103 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_101, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_104 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_102, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_105 = 2;
      __pyx_t_106 = 1;
      __pyx_t_107 = __pyx_v_k;
      __pyx_t_108 = 2;
      __pyx_t_109 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_107, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_108, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_109, __pyx_pybuffernd_Rot.diminfo[2].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_ROT.rcbuffer->pybuffer.buf, __pyx_t_103, __pyx_pybuffernd_ROT.diminfo[0].strides, __pyx_t_104, __pyx_pybuffernd_ROT.diminfo[1].strides, __pyx_t_105, __pyx_pybuffernd_ROT.diminfo[2].strides, __pyx_t_106, __pyx_pybuffernd_ROT.diminfo[3].strides));
+9249:             Rot[k, 2, 2] = ROT[X[k], Y[k], 2, 2]
      __pyx_t_110 = __pyx_v_k;
      __pyx_t_111 = __pyx_v_k;
      __pyx_t_112 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_110, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_113 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_111, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_114 = 2;
      __pyx_t_115 = 2;
      __pyx_t_116 = __pyx_v_k;
      __pyx_t_117 = 2;
      __pyx_t_118 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_116, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_117, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_118, __pyx_pybuffernd_Rot.diminfo[2].strides) = (*__Pyx_BufPtrStrided4d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_ROT.rcbuffer->pybuffer.buf, __pyx_t_112, __pyx_pybuffernd_ROT.diminfo[0].strides, __pyx_t_113, __pyx_pybuffernd_ROT.diminfo[1].strides, __pyx_t_114, __pyx_pybuffernd_ROT.diminfo[2].strides, __pyx_t_115, __pyx_pybuffernd_ROT.diminfo[3].strides));
+9250:             col[k, 0] = Colcanvas[X[k], Y[k], 0]
      __pyx_t_119 = __pyx_v_k;
      __pyx_t_120 = __pyx_v_k;
      __pyx_t_121 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_119, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_122 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_120, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_123 = 0;
      __pyx_t_124 = __pyx_v_k;
      __pyx_t_125 = 0;
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_124, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_125, __pyx_pybuffernd_col.diminfo[1].strides) = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.buf, __pyx_t_121, __pyx_pybuffernd_Colcanvas.diminfo[0].strides, __pyx_t_122, __pyx_pybuffernd_Colcanvas.diminfo[1].strides, __pyx_t_123, __pyx_pybuffernd_Colcanvas.diminfo[2].strides));
+9251:             col[k, 1] = Colcanvas[X[k], Y[k], 1]
      __pyx_t_126 = __pyx_v_k;
      __pyx_t_127 = __pyx_v_k;
      __pyx_t_128 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_126, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_129 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_127, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_130 = 1;
      __pyx_t_131 = __pyx_v_k;
      __pyx_t_132 = 1;
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_131, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_132, __pyx_pybuffernd_col.diminfo[1].strides) = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.buf, __pyx_t_128, __pyx_pybuffernd_Colcanvas.diminfo[0].strides, __pyx_t_129, __pyx_pybuffernd_Colcanvas.diminfo[1].strides, __pyx_t_130, __pyx_pybuffernd_Colcanvas.diminfo[2].strides));
+9252:             col[k, 2] = Colcanvas[X[k], Y[k], 2]
      __pyx_t_133 = __pyx_v_k;
      __pyx_t_134 = __pyx_v_k;
      __pyx_t_135 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_133, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_136 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_134, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_137 = 2;
      __pyx_t_138 = __pyx_v_k;
      __pyx_t_139 = 2;
      *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_138, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_139, __pyx_pybuffernd_col.diminfo[1].strides) = (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Colcanvas.rcbuffer->pybuffer.buf, __pyx_t_135, __pyx_pybuffernd_Colcanvas.diminfo[0].strides, __pyx_t_136, __pyx_pybuffernd_Colcanvas.diminfo[1].strides, __pyx_t_137, __pyx_pybuffernd_Colcanvas.diminfo[2].strides));
+9253:             Col[X[k], Y[k], 0] = col[k, 0]
      __pyx_t_140 = __pyx_v_k;
      __pyx_t_141 = 0;
      __pyx_t_142 = __pyx_v_k;
      __pyx_t_143 = __pyx_v_k;
      __pyx_t_144 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_142, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_145 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_143, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_146 = 0;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_144, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_145, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_146, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_140, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_141, __pyx_pybuffernd_col.diminfo[1].strides));
+9254:             Col[X[k], Y[k], 1] = col[k, 1]
      __pyx_t_147 = __pyx_v_k;
      __pyx_t_148 = 1;
      __pyx_t_149 = __pyx_v_k;
      __pyx_t_150 = __pyx_v_k;
      __pyx_t_151 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_149, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_152 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_150, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_153 = 1;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_151, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_152, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_153, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_147, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_148, __pyx_pybuffernd_col.diminfo[1].strides));
+9255:             Col[X[k], Y[k], 2] = col[k, 2]
      __pyx_t_154 = __pyx_v_k;
      __pyx_t_155 = 2;
      __pyx_t_156 = __pyx_v_k;
      __pyx_t_157 = __pyx_v_k;
      __pyx_t_158 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_156, __pyx_pybuffernd_X.diminfo[0].strides));
      __pyx_t_159 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_157, __pyx_pybuffernd_Y.diminfo[0].strides));
      __pyx_t_160 = 2;
      *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_158, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_159, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_160, __pyx_pybuffernd_Col.diminfo[2].strides) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_154, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_155, __pyx_pybuffernd_col.diminfo[1].strides));
    }
 9256: 
+9257:         showriteframe(sa, sf, fd, aAXIS, I, Col, p, Iter, framepause)
    __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_aAXIS, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
 9258: 
+9259:         aAXIS = 1
    __pyx_v_aAXIS = 1;
 9260: 
 9261: 
+9262:         for k in range(p):
    __pyx_t_2 = __pyx_v_p;
    for (__pyx_t_33 = 0; __pyx_t_33 < __pyx_t_2; __pyx_t_33+=1) {
      __pyx_v_k = __pyx_t_33;
+9263:             A = Rot[k, 0, 0] ** 2 + Rab2 * Rot[k, 1, 0] ** 2 + Rac2 * Rot[k, 2, 0] ** 2
      __pyx_t_161 = __pyx_v_k;
      __pyx_t_162 = 0;
      __pyx_t_163 = 0;
      __pyx_t_164 = __pyx_v_k;
      __pyx_t_165 = 1;
      __pyx_t_166 = 0;
      __pyx_t_167 = __pyx_v_k;
      __pyx_t_168 = 2;
      __pyx_t_169 = 0;
      __pyx_v_A = ((pow((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_161, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_162, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_163, __pyx_pybuffernd_Rot.diminfo[2].strides)), 2.0) + (__pyx_v_Rab2 * pow((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_164, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_165, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_166, __pyx_pybuffernd_Rot.diminfo[2].strides)), 2.0))) + (__pyx_v_Rac2 * pow((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_167, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_168, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_169, __pyx_pybuffernd_Rot.diminfo[2].strides)), 2.0)));
+9264:             B = Rot[k, 0, 1] ** 2 + Rab2 * Rot[k, 1, 1] ** 2 + Rac2 * Rot[k, 2, 1] ** 2
      __pyx_t_170 = __pyx_v_k;
      __pyx_t_171 = 0;
      __pyx_t_172 = 1;
      __pyx_t_173 = __pyx_v_k;
      __pyx_t_174 = 1;
      __pyx_t_175 = 1;
      __pyx_t_176 = __pyx_v_k;
      __pyx_t_177 = 2;
      __pyx_t_178 = 1;
      __pyx_v_B = ((pow((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_170, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_171, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_172, __pyx_pybuffernd_Rot.diminfo[2].strides)), 2.0) + (__pyx_v_Rab2 * pow((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_173, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_174, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_175, __pyx_pybuffernd_Rot.diminfo[2].strides)), 2.0))) + (__pyx_v_Rac2 * pow((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_176, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_177, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_178, __pyx_pybuffernd_Rot.diminfo[2].strides)), 2.0)));
+9265:             H = Rot[k, 0, 0] * Rot[k, 0, 1] + Rab2 * Rot[k, 1, 0] * Rot[k, 1, 1] + Rac2 * Rot[k, 2, 0] * Rot[k, 2, 1]
      __pyx_t_179 = __pyx_v_k;
      __pyx_t_180 = 0;
      __pyx_t_181 = 0;
      __pyx_t_182 = __pyx_v_k;
      __pyx_t_183 = 0;
      __pyx_t_184 = 1;
      __pyx_t_185 = __pyx_v_k;
      __pyx_t_186 = 1;
      __pyx_t_187 = 0;
      __pyx_t_188 = __pyx_v_k;
      __pyx_t_189 = 1;
      __pyx_t_190 = 1;
      __pyx_t_191 = __pyx_v_k;
      __pyx_t_192 = 2;
      __pyx_t_193 = 0;
      __pyx_t_194 = __pyx_v_k;
      __pyx_t_195 = 2;
      __pyx_t_196 = 1;
      __pyx_v_H = ((((*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_179, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_180, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_181, __pyx_pybuffernd_Rot.diminfo[2].strides)) * (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_182, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_183, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_184, __pyx_pybuffernd_Rot.diminfo[2].strides))) + ((__pyx_v_Rab2 * (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_185, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_186, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_187, __pyx_pybuffernd_Rot.diminfo[2].strides))) * (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_188, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_189, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_190, __pyx_pybuffernd_Rot.diminfo[2].strides)))) + ((__pyx_v_Rac2 * (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_191, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_192, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_193, __pyx_pybuffernd_Rot.diminfo[2].strides))) * (*__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Rot.rcbuffer->pybuffer.buf, __pyx_t_194, __pyx_pybuffernd_Rot.diminfo[0].strides, __pyx_t_195, __pyx_pybuffernd_Rot.diminfo[1].strides, __pyx_t_196, __pyx_pybuffernd_Rot.diminfo[2].strides))));
 9266: 
+9267:             Theta[k] = 0.5 * math.atan2(2 * H, (A - B))
      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9267, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_atan2); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9267, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyFloat_FromDouble((2.0 * __pyx_v_H)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9267, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = PyFloat_FromDouble((__pyx_v_A - __pyx_v_B)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9267, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_26 = NULL;
      __pyx_t_25 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
        __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_23);
        if (likely(__pyx_t_26)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_26);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_23, function);
          __pyx_t_25 = 1;
        }
      }
      __pyx_t_8 = PyTuple_New(2+__pyx_t_25); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9267, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_26) {
        __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_26); __pyx_t_26 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_25, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_25, __pyx_t_9);
      __pyx_t_6 = 0;
      __pyx_t_9 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9267, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_23 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9267, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_197 = __pyx_PyFloat_AsDouble(__pyx_t_23); if (unlikely((__pyx_t_197 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 9267, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_198 = __pyx_v_k;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_198, __pyx_pybuffernd_Theta.diminfo[0].strides) = __pyx_t_197;
+9268:             c = math.cos(Theta[k])
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9268, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_cos); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9268, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_199 = __pyx_v_k;
      __pyx_t_1 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_199, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9268, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
        }
      }
      if (!__pyx_t_9) {
        __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9268, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_GOTREF(__pyx_t_23);
      } else {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9268, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = NULL;
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9268, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_23); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 9268, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_v_c = __pyx_t_3;
+9269:             s = math.sin(Theta[k])
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_sin); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_200 = __pyx_v_k;
      __pyx_t_8 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_200, __pyx_pybuffernd_Theta.diminfo[0].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9269, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_23);
      } else {
        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __pyx_t_1 = NULL;
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_23); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 9269, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_v_s = __pyx_t_3;
+9270:             c2 = c ** 2
      __pyx_v_c2 = powf(__pyx_v_c, 2.0);
+9271:             s2 = s ** 2
      __pyx_v_s2 = powf(__pyx_v_s, 2.0);
+9272:             hsc = 2 * H * s * c
      __pyx_v_hsc = (((2.0 * __pyx_v_H) * __pyx_v_s) * __pyx_v_c);
+9273:             cx = A * c2 + B * s2 + hsc
      __pyx_v_cx = (((__pyx_v_A * __pyx_v_c2) + (__pyx_v_B * __pyx_v_s2)) + __pyx_v_hsc);
+9274:             cy = B * c2 + A * s2 - hsc
      __pyx_v_cy = (((__pyx_v_B * __pyx_v_c2) + (__pyx_v_A * __pyx_v_s2)) - __pyx_v_hsc);
 9275: 
+9276:             if cx <= cy:
      __pyx_t_31 = ((__pyx_v_cx <= __pyx_v_cy) != 0);
      if (__pyx_t_31) {
/* … */
        goto __pyx_L17;
      }
+9277:                 major2d[k] = 1 / math.sqrt(cx)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyFloat_FromDouble(__pyx_v_cx); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_9, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_6); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9277, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_23);
        } else {
          __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9277, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9277, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        }
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_23); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __pyx_t_197 = __pyx_PyFloat_AsDouble(__pyx_t_9); if (unlikely((__pyx_t_197 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 9277, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_201 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_major2d.rcbuffer->pybuffer.buf, __pyx_t_201, __pyx_pybuffernd_major2d.diminfo[0].strides) = __pyx_t_197;
+9278:                 minor2d[k] = 1 / math.sqrt(cy)
        __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        __pyx_t_23 = PyFloat_FromDouble(__pyx_v_cy); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_23);
        __pyx_t_6 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_6) {
          __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_23); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9278, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __Pyx_GOTREF(__pyx_t_9);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9278, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
          __Pyx_GIVEREF(__pyx_t_23);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_23);
          __pyx_t_23 = 0;
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9278, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_197 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_197 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 9278, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_202 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_minor2d.rcbuffer->pybuffer.buf, __pyx_t_202, __pyx_pybuffernd_minor2d.diminfo[0].strides) = __pyx_t_197;
 9279:             else:
+9280:                 Theta[k] = pi / 2 + Theta[k]
      /*else*/ {
        __pyx_t_203 = __pyx_v_k;
        __pyx_t_204 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_204, __pyx_pybuffernd_Theta.diminfo[0].strides) = ((__pyx_v_9libEVOLVE_pi / 2.0) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_203, __pyx_pybuffernd_Theta.diminfo[0].strides)));
+9281:                 major2d[k] = 1 / math.sqrt(cy)
        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyFloat_FromDouble(__pyx_v_cy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_23 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_8);
          if (likely(__pyx_t_23)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
            __Pyx_INCREF(__pyx_t_23);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_8, function);
          }
        }
        if (!__pyx_t_23) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9281, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9281, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_23); __pyx_t_23 = NULL;
          __Pyx_GIVEREF(__pyx_t_9);
          PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_9);
          __pyx_t_9 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9281, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_197 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_197 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 9281, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_205 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_major2d.rcbuffer->pybuffer.buf, __pyx_t_205, __pyx_pybuffernd_major2d.diminfo[0].strides) = __pyx_t_197;
+9282:                 minor2d[k] = 1 / math.sqrt(cx)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9282, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9282, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyFloat_FromDouble(__pyx_v_cx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9282, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_9 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_9)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (!__pyx_t_9) {
          __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9282, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_8);
        } else {
          __pyx_t_23 = PyTuple_New(1+1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9282, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_23, 0, __pyx_t_9); __pyx_t_9 = NULL;
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_23, 0+1, __pyx_t_1);
          __pyx_t_1 = 0;
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_23, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9282, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9282, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_197 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_197 == (npy_float64)-1) && PyErr_Occurred())) __PYX_ERR(0, 9282, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_206 = __pyx_v_k;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_minor2d.rcbuffer->pybuffer.buf, __pyx_t_206, __pyx_pybuffernd_minor2d.diminfo[0].strides) = __pyx_t_197;
      }
      __pyx_L17:;
    }
 9283: 
+9284:         while cv2.countNonZero(a) > 0:
    while (1) {
      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_cv2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9284, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_countNonZero); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9284, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_23);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_23))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_23);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_23);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_23, function);
        }
      }
      if (!__pyx_t_8) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_23, ((PyObject *)__pyx_v_a)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9284, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      } else {
        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9284, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
        __Pyx_INCREF(((PyObject *)__pyx_v_a));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_a));
        PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_a));
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_23, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9284, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      __pyx_t_23 = PyObject_RichCompare(__pyx_t_6, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_23); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9284, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_31 = __Pyx_PyObject_IsTrue(__pyx_t_23); if (unlikely(__pyx_t_31 < 0)) __PYX_ERR(0, 9284, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
      if (!__pyx_t_31) break;
+9285:             aAXIS = aAXIS + 1
      __pyx_v_aAXIS = (__pyx_v_aAXIS + 1);
+9286:             for k in range(0, p):
      __pyx_t_2 = __pyx_v_p;
      for (__pyx_t_33 = 0; __pyx_t_33 < __pyx_t_2; __pyx_t_33+=1) {
        __pyx_v_k = __pyx_t_33;
+9287:                 if a[k] == 1:
        __pyx_t_207 = __pyx_v_k;
        __pyx_t_31 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_207, __pyx_pybuffernd_a.diminfo[0].strides)) == 1) != 0);
        if (__pyx_t_31) {
/* … */
        }
      }
+9288:                     a[k] = 0
          __pyx_t_208 = __pyx_v_k;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_208, __pyx_pybuffernd_a.diminfo[0].strides) = 0;
+9289:                     xo = X[k]
          __pyx_t_209 = __pyx_v_k;
          __pyx_v_xo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_X.rcbuffer->pybuffer.buf, __pyx_t_209, __pyx_pybuffernd_X.diminfo[0].strides));
+9290:                     yo = Y[k]
          __pyx_t_210 = __pyx_v_k;
          __pyx_v_yo = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_Y.rcbuffer->pybuffer.buf, __pyx_t_210, __pyx_pybuffernd_Y.diminfo[0].strides));
+9291:                     theta = Theta[k]
          __pyx_t_211 = __pyx_v_k;
          __pyx_v_theta = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Theta.rcbuffer->pybuffer.buf, __pyx_t_211, __pyx_pybuffernd_Theta.diminfo[0].strides));
+9292:                     c = math.cos(theta)
          __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9292, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_cos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9292, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9292, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
            }
          }
          if (!__pyx_t_8) {
            __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9292, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_23);
          } else {
            __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9292, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
            __Pyx_GIVEREF(__pyx_t_6);
            PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
            __pyx_t_6 = 0;
            __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9292, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_23); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 9292, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_v_c = __pyx_t_3;
+9293:                     s = -math.sin(theta)
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9293, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sin); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9293, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = PyFloat_FromDouble(__pyx_v_theta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9293, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_9, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9293, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_23);
          } else {
            __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9293, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9293, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_9 = PyNumber_Negative(__pyx_t_23); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9293, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_9); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 9293, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_v_s = __pyx_t_3;
+9294:                     Io = I[xo, yo]
          __pyx_t_212 = __pyx_v_xo;
          __pyx_t_213 = __pyx_v_yo;
          __pyx_v_Io = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_212, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_213, __pyx_pybuffernd_I.diminfo[1].strides));
+9295:                     MAJ = aAXIS * major2d[k]
          __pyx_t_214 = __pyx_v_k;
          __pyx_v_MAJ = (__pyx_v_aAXIS * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_major2d.rcbuffer->pybuffer.buf, __pyx_t_214, __pyx_pybuffernd_major2d.diminfo[0].strides)));
+9296:                     MIN = aAXIS * minor2d[k]
          __pyx_t_215 = __pyx_v_k;
          __pyx_v_MIN = (__pyx_v_aAXIS * (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_minor2d.rcbuffer->pybuffer.buf, __pyx_t_215, __pyx_pybuffernd_minor2d.diminfo[0].strides)));
+9297:                     delX = math.ceil(math.sqrt((MAJ * c) ** 2 + (MIN * s) ** 2))
          __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9297, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_ceil); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9297, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9297, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9297, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = PyFloat_FromDouble((powf((__pyx_v_MAJ * __pyx_v_c), 2.0) + powf((__pyx_v_MIN * __pyx_v_s), 2.0))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9297, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_26 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_26 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_26)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_26);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_26) {
            __pyx_t_23 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9297, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_GOTREF(__pyx_t_23);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9297, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_26); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_26); __pyx_t_26 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_23 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9297, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_23); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9297, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_GOTREF(__pyx_t_9);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9297, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_23);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_23);
            __pyx_t_23 = 0;
            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9297, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_216 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_9); if (unlikely((__pyx_t_216 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 9297, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_v_delX = __pyx_t_216;
+9298:                     delY = math.ceil(math.sqrt((MAJ * s) ** 2 + (MIN * c) ** 2))
          __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9298, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ceil); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9298, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_23 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9298, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9298, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
          __pyx_t_23 = PyFloat_FromDouble((powf((__pyx_v_MAJ * __pyx_v_s), 2.0) + powf((__pyx_v_MIN * __pyx_v_c), 2.0))); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 9298, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_23);
          __pyx_t_1 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_1)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_1) {
            __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_23); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9298, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_GOTREF(__pyx_t_8);
          } else {
            __pyx_t_26 = PyTuple_New(1+1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9298, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_1); __pyx_t_1 = NULL;
            __Pyx_GIVEREF(__pyx_t_23);
            PyTuple_SET_ITEM(__pyx_t_26, 0+1, __pyx_t_23);
            __pyx_t_23 = 0;
            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_26, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9298, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9298, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_GOTREF(__pyx_t_9);
          } else {
            __pyx_t_26 = PyTuple_New(1+1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9298, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_26);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_26, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_26, 0+1, __pyx_t_8);
            __pyx_t_8 = 0;
            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_26, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9298, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_216 = __Pyx_PyInt_As_PY_LONG_LONG(__pyx_t_9); if (unlikely((__pyx_t_216 == (PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(0, 9298, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_v_delY = __pyx_t_216;
+9299:                     red = col[k, 0]
          __pyx_t_216 = __pyx_v_k;
          __pyx_t_217 = 0;
          __pyx_v_red = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_216, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_217, __pyx_pybuffernd_col.diminfo[1].strides));
+9300:                     green = col[k, 1]
          __pyx_t_218 = __pyx_v_k;
          __pyx_t_219 = 1;
          __pyx_v_green = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_218, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_219, __pyx_pybuffernd_col.diminfo[1].strides));
+9301:                     blue = col[k, 2]
          __pyx_t_220 = __pyx_v_k;
          __pyx_t_221 = 2;
          __pyx_v_blue = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_col.rcbuffer->pybuffer.buf, __pyx_t_220, __pyx_pybuffernd_col.diminfo[0].strides, __pyx_t_221, __pyx_pybuffernd_col.diminfo[1].strides));
 9302: 
+9303:                     for deli in range(0, delX + 1):
          __pyx_t_222 = (__pyx_v_delX + 1);
          for (__pyx_t_223 = 0; __pyx_t_223 < __pyx_t_222; __pyx_t_223+=1) {
            __pyx_v_deli = __pyx_t_223;
+9304:                         for delj in range(0, delY + 1):
            __pyx_t_224 = (__pyx_v_delY + 1);
            for (__pyx_t_225 = 0; __pyx_t_225 < __pyx_t_224; __pyx_t_225+=1) {
              __pyx_v_delj = __pyx_t_225;
+9305:                             if ((deli * c - delj * s) / MAJ) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_31 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_MAJ), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_31) {
/* … */
              }
            }
          }
 9306: 
+9307:                                 i, j = xo + deli, yo + delj
                __pyx_t_226 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_227 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_226;
                __pyx_v_j = __pyx_t_227;
+9308:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_228 = (0 <= __pyx_v_i);
                if (__pyx_t_228) {
                  __pyx_t_228 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_229 = (__pyx_t_228 != 0);
                if (__pyx_t_229) {
                } else {
                  __pyx_t_31 = __pyx_t_229;
                  goto __pyx_L29_bool_binop_done;
                }
                __pyx_t_229 = (0 <= __pyx_v_j);
                if (__pyx_t_229) {
                  __pyx_t_229 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_228 = (__pyx_t_229 != 0);
                __pyx_t_31 = __pyx_t_228;
                __pyx_L29_bool_binop_done:;
                if (__pyx_t_31) {
/* … */
                }
+9309:                                     if I[i, j] == 0:
                  __pyx_t_227 = __pyx_v_i;
                  __pyx_t_226 = __pyx_v_j;
                  __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_227, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_226, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_31) {
/* … */
                  }
+9310:                                         for dum in range(1):
                    for (__pyx_t_230 = 0; __pyx_t_230 < 1; __pyx_t_230+=1) {
                      __pyx_v_dum = __pyx_t_230;
 9311: 
+9312:                                             if i > 0:
                      __pyx_t_31 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9313:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_231 = (__pyx_v_i - 1);
                        __pyx_t_232 = __pyx_v_j;
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_231, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_232, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9314:                                                     I[i, j] = Io
                          __pyx_t_233 = __pyx_v_i;
                          __pyx_t_234 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_233, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_234, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9315:                                                     Col[i, j, 2] = red
                          __pyx_t_235 = __pyx_v_i;
                          __pyx_t_236 = __pyx_v_j;
                          __pyx_t_237 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_235, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_236, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_237, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9316:                                                     Col[i, j, 1] = green
                          __pyx_t_238 = __pyx_v_i;
                          __pyx_t_239 = __pyx_v_j;
                          __pyx_t_240 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_238, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_239, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_240, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9317:                                                     Col[i, j, 0] = blue
                          __pyx_t_241 = __pyx_v_i;
                          __pyx_t_242 = __pyx_v_j;
                          __pyx_t_243 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_241, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_242, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_243, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9318:                                                     a[k] = 1
                          __pyx_t_244 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_244, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9319:                                                     break
                          goto __pyx_L33_break;
+9320:                                             if j > 0:
                      __pyx_t_31 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9321:                                                 if I[i, j - 1] == Io:
                        __pyx_t_245 = __pyx_v_i;
                        __pyx_t_246 = (__pyx_v_j - 1);
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_245, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_246, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9322:                                                     I[i, j] = Io
                          __pyx_t_247 = __pyx_v_i;
                          __pyx_t_248 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_247, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_248, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9323:                                                     Col[i, j, 2] = red
                          __pyx_t_249 = __pyx_v_i;
                          __pyx_t_250 = __pyx_v_j;
                          __pyx_t_251 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_249, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_250, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_251, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9324:                                                     Col[i, j, 1] = green
                          __pyx_t_252 = __pyx_v_i;
                          __pyx_t_253 = __pyx_v_j;
                          __pyx_t_254 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_252, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_253, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_254, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9325:                                                     Col[i, j, 0] = blue
                          __pyx_t_255 = __pyx_v_i;
                          __pyx_t_256 = __pyx_v_j;
                          __pyx_t_257 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_255, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_256, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_257, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9326:                                                     a[k] = 1
                          __pyx_t_258 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_258, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9327:                                                     break
                          goto __pyx_L33_break;
 9328: 
+9329:                                             if j < n - 1:
                      __pyx_t_31 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9330:                                                 if I[i, j + 1] == Io:
                        __pyx_t_259 = __pyx_v_i;
                        __pyx_t_260 = (__pyx_v_j + 1);
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_259, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_260, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9331:                                                     I[i, j] = Io
                          __pyx_t_261 = __pyx_v_i;
                          __pyx_t_262 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_261, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_262, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9332:                                                     Col[i, j, 2] = red
                          __pyx_t_263 = __pyx_v_i;
                          __pyx_t_264 = __pyx_v_j;
                          __pyx_t_265 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_263, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_264, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_265, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9333:                                                     Col[i, j, 1] = green
                          __pyx_t_266 = __pyx_v_i;
                          __pyx_t_267 = __pyx_v_j;
                          __pyx_t_268 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_266, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_267, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_268, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9334:                                                     Col[i, j, 0] = blue
                          __pyx_t_269 = __pyx_v_i;
                          __pyx_t_270 = __pyx_v_j;
                          __pyx_t_271 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_269, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_270, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_271, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9335:                                                     a[k] = 1
                          __pyx_t_272 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_272, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9336:                                                     break
                          goto __pyx_L33_break;
 9337: 
 9338: 
+9339:                                             if i < m - 1:
                      __pyx_t_31 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
                    }
                    __pyx_L33_break:;
+9340:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_273 = (__pyx_v_i + 1);
                        __pyx_t_274 = __pyx_v_j;
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_273, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_274, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9341:                                                     I[i, j] = Io
                          __pyx_t_275 = __pyx_v_i;
                          __pyx_t_276 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_275, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_276, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9342:                                                     Col[i, j, 2] = red
                          __pyx_t_277 = __pyx_v_i;
                          __pyx_t_278 = __pyx_v_j;
                          __pyx_t_279 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_277, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_278, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_279, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9343:                                                     Col[i, j, 1] = green
                          __pyx_t_280 = __pyx_v_i;
                          __pyx_t_281 = __pyx_v_j;
                          __pyx_t_282 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_280, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_281, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_282, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9344:                                                     Col[i, j, 0] = blue
                          __pyx_t_283 = __pyx_v_i;
                          __pyx_t_284 = __pyx_v_j;
                          __pyx_t_285 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_283, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_284, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_285, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9345:                                                     a[k] = 1
                          __pyx_t_286 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_286, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9346:                                                     break
                          goto __pyx_L33_break;
 9347: 
 9348: 
+9349:                                 i, j = xo - deli, yo - delj
                __pyx_t_287 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_288 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_287;
                __pyx_v_j = __pyx_t_288;
+9350:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_228 = (0 <= __pyx_v_i);
                if (__pyx_t_228) {
                  __pyx_t_228 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_229 = (__pyx_t_228 != 0);
                if (__pyx_t_229) {
                } else {
                  __pyx_t_31 = __pyx_t_229;
                  goto __pyx_L43_bool_binop_done;
                }
                __pyx_t_229 = (0 <= __pyx_v_j);
                if (__pyx_t_229) {
                  __pyx_t_229 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_228 = (__pyx_t_229 != 0);
                __pyx_t_31 = __pyx_t_228;
                __pyx_L43_bool_binop_done:;
                if (__pyx_t_31) {
/* … */
                }
+9351:                                     if I[i, j] == 0:
                  __pyx_t_288 = __pyx_v_i;
                  __pyx_t_287 = __pyx_v_j;
                  __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_288, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_287, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_31) {
/* … */
                  }
+9352:                                         for dum in range(1):
                    for (__pyx_t_230 = 0; __pyx_t_230 < 1; __pyx_t_230+=1) {
                      __pyx_v_dum = __pyx_t_230;
 9353: 
+9354:                                             if i > 0:
                      __pyx_t_31 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9355:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_289 = (__pyx_v_i - 1);
                        __pyx_t_290 = __pyx_v_j;
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_289, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_290, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9356:                                                     I[i, j] = Io
                          __pyx_t_291 = __pyx_v_i;
                          __pyx_t_292 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_291, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_292, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9357:                                                     Col[i, j, 2] = red
                          __pyx_t_293 = __pyx_v_i;
                          __pyx_t_294 = __pyx_v_j;
                          __pyx_t_295 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_293, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_294, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_295, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9358:                                                     Col[i, j, 1] = green
                          __pyx_t_296 = __pyx_v_i;
                          __pyx_t_297 = __pyx_v_j;
                          __pyx_t_298 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_296, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_297, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_298, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9359:                                                     Col[i, j, 0] = blue
                          __pyx_t_299 = __pyx_v_i;
                          __pyx_t_300 = __pyx_v_j;
                          __pyx_t_301 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_299, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_300, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_301, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9360:                                                     a[k] = 1
                          __pyx_t_302 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_302, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9361:                                                     break
                          goto __pyx_L47_break;
+9362:                                             if j > 0:
                      __pyx_t_31 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9363:                                                 if I[i, j - 1] == Io:
                        __pyx_t_303 = __pyx_v_i;
                        __pyx_t_304 = (__pyx_v_j - 1);
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_303, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_304, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9364:                                                     I[i, j] = Io
                          __pyx_t_305 = __pyx_v_i;
                          __pyx_t_306 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_305, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_306, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9365:                                                     Col[i, j, 2] = red
                          __pyx_t_307 = __pyx_v_i;
                          __pyx_t_308 = __pyx_v_j;
                          __pyx_t_309 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_307, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_308, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_309, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9366:                                                     Col[i, j, 1] = green
                          __pyx_t_310 = __pyx_v_i;
                          __pyx_t_311 = __pyx_v_j;
                          __pyx_t_312 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_310, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_311, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_312, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9367:                                                     Col[i, j, 0] = blue
                          __pyx_t_313 = __pyx_v_i;
                          __pyx_t_314 = __pyx_v_j;
                          __pyx_t_315 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_313, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_314, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_315, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9368:                                                     a[k] = 1
                          __pyx_t_316 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_316, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9369:                                                     break
                          goto __pyx_L47_break;
 9370: 
+9371:                                             if j < n - 1:
                      __pyx_t_31 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9372:                                                 if I[i, j + 1] == Io:
                        __pyx_t_317 = __pyx_v_i;
                        __pyx_t_318 = (__pyx_v_j + 1);
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_317, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_318, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9373:                                                     I[i, j] = Io
                          __pyx_t_319 = __pyx_v_i;
                          __pyx_t_320 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_319, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_320, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9374:                                                     Col[i, j, 2] = red
                          __pyx_t_321 = __pyx_v_i;
                          __pyx_t_322 = __pyx_v_j;
                          __pyx_t_323 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_321, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_322, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_323, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9375:                                                     Col[i, j, 1] = green
                          __pyx_t_324 = __pyx_v_i;
                          __pyx_t_325 = __pyx_v_j;
                          __pyx_t_326 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_324, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_325, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_326, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9376:                                                     Col[i, j, 0] = blue
                          __pyx_t_327 = __pyx_v_i;
                          __pyx_t_328 = __pyx_v_j;
                          __pyx_t_329 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_327, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_328, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_329, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9377:                                                     a[k] = 1
                          __pyx_t_330 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_330, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9378:                                                     break
                          goto __pyx_L47_break;
 9379: 
 9380: 
+9381:                                             if i < m - 1:
                      __pyx_t_31 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
                    }
                    __pyx_L47_break:;
+9382:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_331 = (__pyx_v_i + 1);
                        __pyx_t_332 = __pyx_v_j;
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_331, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_332, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9383:                                                     I[i, j] = Io
                          __pyx_t_333 = __pyx_v_i;
                          __pyx_t_334 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_333, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_334, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9384:                                                     Col[i, j, 2] = red
                          __pyx_t_335 = __pyx_v_i;
                          __pyx_t_336 = __pyx_v_j;
                          __pyx_t_337 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_335, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_336, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_337, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9385:                                                     Col[i, j, 1] = green
                          __pyx_t_338 = __pyx_v_i;
                          __pyx_t_339 = __pyx_v_j;
                          __pyx_t_340 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_338, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_339, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_340, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9386:                                                     Col[i, j, 0] = blue
                          __pyx_t_341 = __pyx_v_i;
                          __pyx_t_342 = __pyx_v_j;
                          __pyx_t_343 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_341, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_342, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_343, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9387:                                                     a[k] = 1
                          __pyx_t_344 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_344, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9388:                                                     break
                          goto __pyx_L47_break;
 9389: 
 9390: 
+9391:                     for deli in range(0, -delX - 1, -1):
          __pyx_t_222 = ((-__pyx_v_delX) - 1);
          for (__pyx_t_223 = 0; __pyx_t_223 > __pyx_t_222; __pyx_t_223-=1) {
            __pyx_v_deli = __pyx_t_223;
+9392:                         for delj in range(0, delY + 1):
            __pyx_t_224 = (__pyx_v_delY + 1);
            for (__pyx_t_225 = 0; __pyx_t_225 < __pyx_t_224; __pyx_t_225+=1) {
              __pyx_v_delj = __pyx_t_225;
+9393:                             if ((deli * c - delj * s) / MAJ) ** 2 + ((deli * s + delj * c) / MIN) ** 2 <= 1:
              __pyx_t_31 = (((powf((((__pyx_v_deli * __pyx_v_c) - (__pyx_v_delj * __pyx_v_s)) / __pyx_v_MAJ), 2.0) + powf((((__pyx_v_deli * __pyx_v_s) + (__pyx_v_delj * __pyx_v_c)) / __pyx_v_MIN), 2.0)) <= 1.0) != 0);
              if (__pyx_t_31) {
/* … */
              }
            }
          }
 9394: 
+9395:                                 i, j = xo + deli, yo + delj
                __pyx_t_345 = (__pyx_v_xo + __pyx_v_deli);
                __pyx_t_346 = (__pyx_v_yo + __pyx_v_delj);
                __pyx_v_i = __pyx_t_345;
                __pyx_v_j = __pyx_t_346;
+9396:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_228 = (0 <= __pyx_v_i);
                if (__pyx_t_228) {
                  __pyx_t_228 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_229 = (__pyx_t_228 != 0);
                if (__pyx_t_229) {
                } else {
                  __pyx_t_31 = __pyx_t_229;
                  goto __pyx_L62_bool_binop_done;
                }
                __pyx_t_229 = (0 <= __pyx_v_j);
                if (__pyx_t_229) {
                  __pyx_t_229 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_228 = (__pyx_t_229 != 0);
                __pyx_t_31 = __pyx_t_228;
                __pyx_L62_bool_binop_done:;
                if (__pyx_t_31) {
/* … */
                }
+9397:                                     if I[i, j] == 0:
                  __pyx_t_346 = __pyx_v_i;
                  __pyx_t_345 = __pyx_v_j;
                  __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_346, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_345, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_31) {
/* … */
                  }
+9398:                                         for dum in range(1):
                    for (__pyx_t_230 = 0; __pyx_t_230 < 1; __pyx_t_230+=1) {
                      __pyx_v_dum = __pyx_t_230;
 9399: 
+9400:                                             if i > 0:
                      __pyx_t_31 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9401:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_347 = (__pyx_v_i - 1);
                        __pyx_t_348 = __pyx_v_j;
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_347, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_348, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9402:                                                     I[i, j] = Io
                          __pyx_t_349 = __pyx_v_i;
                          __pyx_t_350 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_349, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_350, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9403:                                                     Col[i, j, 2] = red
                          __pyx_t_351 = __pyx_v_i;
                          __pyx_t_352 = __pyx_v_j;
                          __pyx_t_353 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_351, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_352, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_353, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9404:                                                     Col[i, j, 1] = green
                          __pyx_t_354 = __pyx_v_i;
                          __pyx_t_355 = __pyx_v_j;
                          __pyx_t_356 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_354, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_355, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_356, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9405:                                                     Col[i, j, 0] = blue
                          __pyx_t_357 = __pyx_v_i;
                          __pyx_t_358 = __pyx_v_j;
                          __pyx_t_359 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_357, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_358, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_359, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9406:                                                     a[k] = 1
                          __pyx_t_360 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_360, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9407:                                                     break
                          goto __pyx_L66_break;
+9408:                                             if j > 0:
                      __pyx_t_31 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9409:                                                 if I[i, j - 1] == Io:
                        __pyx_t_361 = __pyx_v_i;
                        __pyx_t_362 = (__pyx_v_j - 1);
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_361, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_362, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9410:                                                     I[i, j] = Io
                          __pyx_t_363 = __pyx_v_i;
                          __pyx_t_364 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_363, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_364, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9411:                                                     Col[i, j, 2] = red
                          __pyx_t_365 = __pyx_v_i;
                          __pyx_t_366 = __pyx_v_j;
                          __pyx_t_367 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_365, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_366, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_367, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9412:                                                     Col[i, j, 1] = green
                          __pyx_t_368 = __pyx_v_i;
                          __pyx_t_369 = __pyx_v_j;
                          __pyx_t_370 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_368, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_369, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_370, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9413:                                                     Col[i, j, 0] = blue
                          __pyx_t_371 = __pyx_v_i;
                          __pyx_t_372 = __pyx_v_j;
                          __pyx_t_373 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_371, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_372, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_373, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9414:                                                     a[k] = 1
                          __pyx_t_374 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_374, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9415:                                                     break
                          goto __pyx_L66_break;
 9416: 
+9417:                                             if j < n - 1:
                      __pyx_t_31 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9418:                                                 if I[i, j + 1] == Io:
                        __pyx_t_375 = __pyx_v_i;
                        __pyx_t_376 = (__pyx_v_j + 1);
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_375, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_376, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9419:                                                     I[i, j] = Io
                          __pyx_t_377 = __pyx_v_i;
                          __pyx_t_378 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_377, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_378, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9420:                                                     Col[i, j, 2] = red
                          __pyx_t_379 = __pyx_v_i;
                          __pyx_t_380 = __pyx_v_j;
                          __pyx_t_381 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_379, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_380, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_381, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9421:                                                     Col[i, j, 1] = green
                          __pyx_t_382 = __pyx_v_i;
                          __pyx_t_383 = __pyx_v_j;
                          __pyx_t_384 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_382, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_383, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_384, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9422:                                                     Col[i, j, 0] = blue
                          __pyx_t_385 = __pyx_v_i;
                          __pyx_t_386 = __pyx_v_j;
                          __pyx_t_387 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_385, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_386, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_387, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9423:                                                     a[k] = 1
                          __pyx_t_388 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_388, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9424:                                                     break
                          goto __pyx_L66_break;
 9425: 
 9426: 
+9427:                                             if i < m - 1:
                      __pyx_t_31 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
                    }
                    __pyx_L66_break:;
+9428:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_389 = (__pyx_v_i + 1);
                        __pyx_t_390 = __pyx_v_j;
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_389, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_390, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9429:                                                     I[i, j] = Io
                          __pyx_t_391 = __pyx_v_i;
                          __pyx_t_392 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_391, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_392, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9430:                                                     Col[i, j, 2] = red
                          __pyx_t_393 = __pyx_v_i;
                          __pyx_t_394 = __pyx_v_j;
                          __pyx_t_395 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_393, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_394, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_395, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9431:                                                     Col[i, j, 1] = green
                          __pyx_t_396 = __pyx_v_i;
                          __pyx_t_397 = __pyx_v_j;
                          __pyx_t_398 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_396, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_397, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_398, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9432:                                                     Col[i, j, 0] = blue
                          __pyx_t_399 = __pyx_v_i;
                          __pyx_t_400 = __pyx_v_j;
                          __pyx_t_401 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_399, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_400, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_401, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9433:                                                     a[k] = 1
                          __pyx_t_402 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_402, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9434:                                                     break
                          goto __pyx_L66_break;
 9435: 
 9436: 
+9437:                                 i, j = xo - deli, yo - delj
                __pyx_t_403 = (__pyx_v_xo - __pyx_v_deli);
                __pyx_t_404 = (__pyx_v_yo - __pyx_v_delj);
                __pyx_v_i = __pyx_t_403;
                __pyx_v_j = __pyx_t_404;
+9438:                                 if 0 <= i <= m - 1 and 0 <= j <= n - 1:
                __pyx_t_228 = (0 <= __pyx_v_i);
                if (__pyx_t_228) {
                  __pyx_t_228 = (__pyx_v_i <= (__pyx_v_m - 1));
                }
                __pyx_t_229 = (__pyx_t_228 != 0);
                if (__pyx_t_229) {
                } else {
                  __pyx_t_31 = __pyx_t_229;
                  goto __pyx_L76_bool_binop_done;
                }
                __pyx_t_229 = (0 <= __pyx_v_j);
                if (__pyx_t_229) {
                  __pyx_t_229 = (__pyx_v_j <= (__pyx_v_n - 1));
                }
                __pyx_t_228 = (__pyx_t_229 != 0);
                __pyx_t_31 = __pyx_t_228;
                __pyx_L76_bool_binop_done:;
                if (__pyx_t_31) {
/* … */
                }
+9439:                                     if I[i, j] == 0:
                  __pyx_t_404 = __pyx_v_i;
                  __pyx_t_403 = __pyx_v_j;
                  __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_404, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_403, __pyx_pybuffernd_I.diminfo[1].strides)) == 0) != 0);
                  if (__pyx_t_31) {
/* … */
                  }
+9440:                                         for dum in range(1):
                    for (__pyx_t_230 = 0; __pyx_t_230 < 1; __pyx_t_230+=1) {
                      __pyx_v_dum = __pyx_t_230;
 9441: 
+9442:                                             if i > 0:
                      __pyx_t_31 = ((__pyx_v_i > 0) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9443:                                                 if  I[i - 1, j] == Io:
                        __pyx_t_405 = (__pyx_v_i - 1);
                        __pyx_t_406 = __pyx_v_j;
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_405, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_406, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9444:                                                     I[i, j] = Io
                          __pyx_t_407 = __pyx_v_i;
                          __pyx_t_408 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_407, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_408, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9445:                                                     Col[i, j, 2] = red
                          __pyx_t_409 = __pyx_v_i;
                          __pyx_t_410 = __pyx_v_j;
                          __pyx_t_411 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_409, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_410, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_411, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9446:                                                     Col[i, j, 1] = green
                          __pyx_t_412 = __pyx_v_i;
                          __pyx_t_413 = __pyx_v_j;
                          __pyx_t_414 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_412, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_413, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_414, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9447:                                                     Col[i, j, 0] = blue
                          __pyx_t_415 = __pyx_v_i;
                          __pyx_t_416 = __pyx_v_j;
                          __pyx_t_417 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_415, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_416, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_417, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9448:                                                     a[k] = 1
                          __pyx_t_418 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_418, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9449:                                                     break
                          goto __pyx_L80_break;
+9450:                                             if j > 0:
                      __pyx_t_31 = ((__pyx_v_j > 0) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9451:                                                 if I[i, j - 1] == Io:
                        __pyx_t_419 = __pyx_v_i;
                        __pyx_t_420 = (__pyx_v_j - 1);
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_419, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_420, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9452:                                                     I[i, j] = Io
                          __pyx_t_421 = __pyx_v_i;
                          __pyx_t_422 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_421, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_422, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9453:                                                     Col[i, j, 2] = red
                          __pyx_t_423 = __pyx_v_i;
                          __pyx_t_424 = __pyx_v_j;
                          __pyx_t_425 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_423, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_424, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_425, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9454:                                                     Col[i, j, 1] = green
                          __pyx_t_426 = __pyx_v_i;
                          __pyx_t_427 = __pyx_v_j;
                          __pyx_t_428 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_426, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_427, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_428, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9455:                                                     Col[i, j, 0] = blue
                          __pyx_t_429 = __pyx_v_i;
                          __pyx_t_430 = __pyx_v_j;
                          __pyx_t_431 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_429, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_430, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_431, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9456:                                                     a[k] = 1
                          __pyx_t_432 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_432, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9457:                                                     break
                          goto __pyx_L80_break;
 9458: 
+9459:                                             if j < n - 1:
                      __pyx_t_31 = ((__pyx_v_j < (__pyx_v_n - 1)) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
+9460:                                                 if I[i, j + 1] == Io:
                        __pyx_t_433 = __pyx_v_i;
                        __pyx_t_434 = (__pyx_v_j + 1);
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_433, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_434, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9461:                                                     I[i, j] = Io
                          __pyx_t_435 = __pyx_v_i;
                          __pyx_t_436 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_435, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_436, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9462:                                                     Col[i, j, 2] = red
                          __pyx_t_437 = __pyx_v_i;
                          __pyx_t_438 = __pyx_v_j;
                          __pyx_t_439 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_437, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_438, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_439, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9463:                                                     Col[i, j, 1] = green
                          __pyx_t_440 = __pyx_v_i;
                          __pyx_t_441 = __pyx_v_j;
                          __pyx_t_442 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_440, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_441, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_442, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9464:                                                     Col[i, j, 0] = blue
                          __pyx_t_443 = __pyx_v_i;
                          __pyx_t_444 = __pyx_v_j;
                          __pyx_t_445 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_443, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_444, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_445, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9465:                                                     a[k] = 1
                          __pyx_t_446 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_446, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9466:                                                     break
                          goto __pyx_L80_break;
 9467: 
 9468: 
+9469:                                             if i < m - 1:
                      __pyx_t_31 = ((__pyx_v_i < (__pyx_v_m - 1)) != 0);
                      if (__pyx_t_31) {
/* … */
                      }
                    }
                    __pyx_L80_break:;
+9470:                                                 if  I[i + 1, j] == Io:
                        __pyx_t_447 = (__pyx_v_i + 1);
                        __pyx_t_448 = __pyx_v_j;
                        __pyx_t_31 = (((*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_447, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_448, __pyx_pybuffernd_I.diminfo[1].strides)) == __pyx_v_Io) != 0);
                        if (__pyx_t_31) {
/* … */
                        }
+9471:                                                     I[i, j] = Io
                          __pyx_t_449 = __pyx_v_i;
                          __pyx_t_450 = __pyx_v_j;
                          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_I.rcbuffer->pybuffer.buf, __pyx_t_449, __pyx_pybuffernd_I.diminfo[0].strides, __pyx_t_450, __pyx_pybuffernd_I.diminfo[1].strides) = __pyx_v_Io;
+9472:                                                     Col[i, j, 2] = red
                          __pyx_t_451 = __pyx_v_i;
                          __pyx_t_452 = __pyx_v_j;
                          __pyx_t_453 = 2;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_451, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_452, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_453, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_red;
+9473:                                                     Col[i, j, 1] = green
                          __pyx_t_454 = __pyx_v_i;
                          __pyx_t_455 = __pyx_v_j;
                          __pyx_t_456 = 1;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_454, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_455, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_456, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_green;
+9474:                                                     Col[i, j, 0] = blue
                          __pyx_t_457 = __pyx_v_i;
                          __pyx_t_458 = __pyx_v_j;
                          __pyx_t_459 = 0;
                          *__Pyx_BufPtrStrided3d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_Col.rcbuffer->pybuffer.buf, __pyx_t_457, __pyx_pybuffernd_Col.diminfo[0].strides, __pyx_t_458, __pyx_pybuffernd_Col.diminfo[1].strides, __pyx_t_459, __pyx_pybuffernd_Col.diminfo[2].strides) = __pyx_v_blue;
+9475:                                                     a[k] = 1
                          __pyx_t_460 = __pyx_v_k;
                          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_460, __pyx_pybuffernd_a.diminfo[0].strides) = 1;
+9476:                                                     break
                          goto __pyx_L80_break;
 9477: 
 9478: 
 9479: 
+9480:                     if a[k] == 0:
          __pyx_t_222 = __pyx_v_k;
          __pyx_t_31 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_222, __pyx_pybuffernd_a.diminfo[0].strides)) == 0) != 0);
          if (__pyx_t_31) {
/* … */
          }
+9481:                         xmin = max(0, xo - delX)
            __pyx_t_223 = (__pyx_v_xo - __pyx_v_delX);
            __pyx_t_230 = 0;
            if (((__pyx_t_223 > __pyx_t_230) != 0)) {
              __pyx_t_224 = __pyx_t_223;
            } else {
              __pyx_t_224 = __pyx_t_230;
            }
            __pyx_v_xmin = __pyx_t_224;
+9482:                         xmax = min(m - 1, xo + delX)
            __pyx_t_224 = (__pyx_v_xo + __pyx_v_delX);
            __pyx_t_223 = (__pyx_v_m - 1);
            if (((__pyx_t_224 < __pyx_t_223) != 0)) {
              __pyx_t_225 = __pyx_t_224;
            } else {
              __pyx_t_225 = __pyx_t_223;
            }
            __pyx_v_xmax = __pyx_t_225;
+9483:                         ymin = max(0, yo - delY)
            __pyx_t_225 = (__pyx_v_yo - __pyx_v_delY);
            __pyx_t_230 = 0;
            if (((__pyx_t_225 > __pyx_t_230) != 0)) {
              __pyx_t_224 = __pyx_t_225;
            } else {
              __pyx_t_224 = __pyx_t_230;
            }
            __pyx_v_ymin = __pyx_t_224;
+9484:                         ymax = min(n - 1, yo + delY)
            __pyx_t_224 = (__pyx_v_yo + __pyx_v_delY);
            __pyx_t_225 = (__pyx_v_n - 1);
            if (((__pyx_t_224 < __pyx_t_225) != 0)) {
              __pyx_t_223 = __pyx_t_224;
            } else {
              __pyx_t_223 = __pyx_t_225;
            }
            __pyx_v_ymax = __pyx_t_223;
+9485:                         a[k] = checkalive(I, m, n, Io, xmin, xmax, ymin, ymax)
            __pyx_t_223 = __pyx_v_k;
            *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_a.rcbuffer->pybuffer.buf, __pyx_t_223, __pyx_pybuffernd_a.diminfo[0].strides) = __pyx_f_9libEVOLVE_checkalive(((PyArrayObject *)__pyx_v_I), __pyx_v_m, __pyx_v_n, __pyx_v_Io, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_ymin, __pyx_v_ymax);
 9486: 
+9487:             showriteframe(sa, sf, fd, aAXIS, I, Col, p, Iter, framepause)
      __pyx_f_9libEVOLVE_showriteframe(__pyx_v_sa, __pyx_v_sf, __pyx_v_fd, __pyx_v_aAXIS, ((PyArrayObject *)__pyx_v_I), ((PyArrayObject *)__pyx_v_Col), __pyx_v_p, __pyx_v_Iter, __pyx_v_framepause);
+9488:             aAXIS = aAXIS + 1
      __pyx_v_aAXIS = (__pyx_v_aAXIS + 1);
+9489:             bAXIS = aAXIS / Rab
      __pyx_v_bAXIS = (((float)__pyx_v_aAXIS) / __pyx_v_Rab);
+9490:             cAXIS = aAXIS / Rac
      __pyx_v_cAXIS = (((float)__pyx_v_aAXIS) / __pyx_v_Rac);
    }
+9491:         if asy == 0:
    __pyx_t_31 = ((__pyx_v_asy == 0) != 0);
    if (__pyx_t_31) {
/* … */
    }
+9492:             break
      goto __pyx_L12_break;
 9493:         else:
+9494:             if (I == Iold).all() == 1:
    /*else*/ {
      __pyx_t_7 = PyObject_RichCompare(((PyObject *)__pyx_v_I), ((PyObject *)__pyx_v_Iold), Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9494, __pyx_L1_error)
      __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_all); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9494, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_26);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_26))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_26);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_26);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_26, function);
        }
      }
      if (__pyx_t_7) {
        __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_26, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9494, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_26); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9494, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
      __pyx_t_26 = __Pyx_PyInt_EqObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9494, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_26);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_31 = __Pyx_PyObject_IsTrue(__pyx_t_26); if (unlikely(__pyx_t_31 < 0)) __PYX_ERR(0, 9494, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
      if (__pyx_t_31) {
/* … */
      }
+9495:                 break
        goto __pyx_L12_break;
 9496:             else:
+9497:                 Iold = I
      /*else*/ {
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer);
          __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_I), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_5 < 0)) {
            PyErr_Fetch(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Iold.rcbuffer->pybuffer, (PyObject*)__pyx_v_Iold, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_27); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_29);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_27, __pyx_t_28, __pyx_t_29);
            }
          }
          __pyx_pybuffernd_Iold.diminfo[0].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Iold.diminfo[0].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_Iold.diminfo[1].strides = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_Iold.diminfo[1].shape = __pyx_pybuffernd_Iold.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9497, __pyx_L1_error)
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_I));
        __Pyx_DECREF_SET(__pyx_v_Iold, ((PyArrayObject *)__pyx_v_I));
+9498:                 I = np.zeros((m, n), dtype=np.int64)
        __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_26);
        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_26, __pyx_n_s_zeros); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
        __pyx_t_26 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_26);
        __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_26);
        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_26);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
        __pyx_t_26 = 0;
        __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_26 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_26);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_26, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
        if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9498, __pyx_L1_error)
        __pyx_t_10 = ((PyArrayObject *)__pyx_t_6);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_I.rcbuffer->pybuffer);
          __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_t_10, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
          if (unlikely(__pyx_t_5 < 0)) {
            PyErr_Fetch(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_I.rcbuffer->pybuffer, (PyObject*)__pyx_v_I, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_29); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_27);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_29, __pyx_t_28, __pyx_t_27);
            }
          }
          __pyx_pybuffernd_I.diminfo[0].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_I.diminfo[0].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_I.diminfo[1].strides = __pyx_pybuffernd_I.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_I.diminfo[1].shape = __pyx_pybuffernd_I.rcbuffer->pybuffer.shape[1];
          if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9498, __pyx_L1_error)
        }
        __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_I, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;
+9499:                 a = np.ones(p, dtype=np.int8)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9499, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_ones); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9499, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9499, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9499, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9499, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9499, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_int8); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9499, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_26);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_26) < 0) __PYX_ERR(0, 9499, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
        __pyx_t_26 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9499, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_26);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (!(likely(((__pyx_t_26) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_26, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9499, __pyx_L1_error)
        __pyx_t_12 = ((PyArrayObject *)__pyx_t_26);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_a.rcbuffer->pybuffer);
          __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_t_12, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_5 < 0)) {
            PyErr_Fetch(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_a.rcbuffer->pybuffer, (PyObject*)__pyx_v_a, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_27); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_29);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_27, __pyx_t_28, __pyx_t_29);
            }
          }
          __pyx_pybuffernd_a.diminfo[0].strides = __pyx_pybuffernd_a.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_a.diminfo[0].shape = __pyx_pybuffernd_a.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9499, __pyx_L1_error)
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF_SET(__pyx_v_a, ((PyArrayObject *)__pyx_t_26));
        __pyx_t_26 = 0;
+9500:                 X , Y = morph.centroids(Iold, m, n, p)
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_morph); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9500, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_centroids); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9500, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_m); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9500, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_n); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9500, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = __Pyx_PyInt_From_PY_LONG_LONG(__pyx_v_p); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9500, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_23 = NULL;
        __pyx_t_25 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_23)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_23);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_25 = 1;
          }
        }
        __pyx_t_1 = PyTuple_New(4+__pyx_t_25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9500, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__pyx_t_23) {
          __Pyx_GIVEREF(__pyx_t_23); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_23); __pyx_t_23 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_Iold));
        PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_25, ((PyObject *)__pyx_v_Iold));
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_25, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_25, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_25, __pyx_t_9);
        __pyx_t_6 = 0;
        __pyx_t_8 = 0;
        __pyx_t_9 = 0;
        __pyx_t_26 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9500, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_26);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_26))) || (PyList_CheckExact(__pyx_t_26))) {
          PyObject* sequence = __pyx_t_26;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 9500, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_1);
          #else
          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9500, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9500, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          #endif
          __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_9 = PyObject_GetIter(__pyx_t_26); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9500, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
          __pyx_t_32 = Py_TYPE(__pyx_t_9)->tp_iternext;
          index = 0; __pyx_t_7 = __pyx_t_32(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L92_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          index = 1; __pyx_t_1 = __pyx_t_32(__pyx_t_9); if (unlikely(!__pyx_t_1)) goto __pyx_L92_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_1);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_32(__pyx_t_9), 2) < 0) __PYX_ERR(0, 9500, __pyx_L1_error)
          __pyx_t_32 = NULL;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          goto __pyx_L93_unpacking_done;
          __pyx_L92_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_32 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 9500, __pyx_L1_error)
          __pyx_L93_unpacking_done:;
        }
        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9500, __pyx_L1_error)
        if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 9500, __pyx_L1_error)
        __pyx_t_13 = ((PyArrayObject *)__pyx_t_7);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_X.rcbuffer->pybuffer);
          __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_5 < 0)) {
            PyErr_Fetch(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_X.rcbuffer->pybuffer, (PyObject*)__pyx_v_X, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_29); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_27);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_29, __pyx_t_28, __pyx_t_27);
            }
          }
          __pyx_pybuffernd_X.diminfo[0].strides = __pyx_pybuffernd_X.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_X.diminfo[0].shape = __pyx_pybuffernd_X.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9500, __pyx_L1_error)
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF_SET(__pyx_v_X, ((PyArrayObject *)__pyx_t_7));
        __pyx_t_7 = 0;
        __pyx_t_14 = ((PyArrayObject *)__pyx_t_1);
        {
          __Pyx_BufFmt_StackElem __pyx_stack[1];
          __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_Y.rcbuffer->pybuffer);
          __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
          if (unlikely(__pyx_t_5 < 0)) {
            PyErr_Fetch(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
            if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_Y.rcbuffer->pybuffer, (PyObject*)__pyx_v_Y, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
              Py_XDECREF(__pyx_t_27); Py_XDECREF(__pyx_t_28); Py_XDECREF(__pyx_t_29);
              __Pyx_RaiseBufferFallbackError();
            } else {
              PyErr_Restore(__pyx_t_27, __pyx_t_28, __pyx_t_29);
            }
          }
          __pyx_pybuffernd_Y.diminfo[0].strides = __pyx_pybuffernd_Y.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_Y.diminfo[0].shape = __pyx_pybuffernd_Y.rcbuffer->pybuffer.shape[0];
          if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 9500, __pyx_L1_error)
        }
        __pyx_t_14 = 0;
        __Pyx_DECREF_SET(__pyx_v_Y, ((PyArrayObject *)__pyx_t_1));
        __pyx_t_1 = 0;
+9501:                 Iter = Iter + 1
        __pyx_v_Iter = (__pyx_v_Iter + 1);
      }
    }
  }
  __pyx_L12_break:;
 9502: 
+9503:     toc = time.time()
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  if (__pyx_t_1) {
    __pyx_t_26 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9503, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __pyx_t_26 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9503, __pyx_L1_error)
  }
  __Pyx_GOTREF(__pyx_t_26);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_30 = __pyx_PyFloat_AsDouble(__pyx_t_26); if (unlikely((__pyx_t_30 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 9503, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
  __pyx_v_toc = __pyx_t_30;
+9504:     obj.exetime = toc - tic
  __pyx_t_26 = PyFloat_FromDouble((__pyx_v_toc - __pyx_v_tic)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 9504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_26);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_exetime, __pyx_t_26) < 0) __PYX_ERR(0, 9504, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
+9505:     obj.X = X
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_X, ((PyObject *)__pyx_v_X)) < 0) __PYX_ERR(0, 9505, __pyx_L1_error)
+9506:     obj.Y = Y
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Y, ((PyObject *)__pyx_v_Y)) < 0) __PYX_ERR(0, 9506, __pyx_L1_error)
+9507:     obj.I = I
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_I, ((PyObject *)__pyx_v_I)) < 0) __PYX_ERR(0, 9507, __pyx_L1_error)
+9508:     obj.Thetavalues = Theta
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Thetavalues, ((PyObject *)__pyx_v_Theta)) < 0) __PYX_ERR(0, 9508, __pyx_L1_error)
+9509:     obj.Col = Col
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_n_s_Col, ((PyObject *)__pyx_v_Col)) < 0) __PYX_ERR(0, 9509, __pyx_L1_error)
+9510:     return obj
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;